如何让Gtk.ListBoxRow接受任何区域的右键点击?

时间:2017-07-23 16:18:04

标签: user-interface gtk3 vala

修改:更正后的代码。

ListBox listBox = new ListBox ();
ListBoxRow row = new ListBoxRow ();
row.add (new Label ("Test row"));
row.button_release_event.connect ((event) => {
    if (event.button == 3) {
        debug ("Right button clicked.\n");
    }
    return false;
});
listBox.add (row);

不起作用。什么都不打印。但另一个工作正常

ListBox listBox = new ListBox ();
ListBoxRow row = new ListBoxRow ();
row.add (new CheckButton.with_label ("Test row"));
row.button_release_event.connect ((event) => {
    if (event.button == 3) {
        debug ("Right button clicked.\n");
    }
    return false;
});
listBox.add (row);

打印调试消息。是否可以在任何区域处理ListBoxRow上的右键单击,无论其子级是什么?

1 个答案:

答案 0 :(得分:2)

解决此问题的一个选项是使用Gtk.EventBox作为每个Gtk.ListBoxRow的直接子项,然后使用EventBox作为行内容的容器:

if( i === (data.query.embeddedin.length -1) ) {