Clutter アクタが右クリックされたときに gtk メニュー ポップアップを表示しようとしています。なぜかメニューが表示されません。これが私のコードです(すべてではなく、ハンドラーのみ)
button_press_event.connect((event) => {
if (event.click_count < 2 && event.button == 1) {
debug("Icon simple click\n");
} else if (event.click_count < 2 && event.button == 3) {
debug("Showing Pop Up menu\n");
var popup_menu = new PopupMenu();
popup_menu.add_menu_item("Prueba 1");
popup_menu.show_all();
popup_menu.show_popup();
return true;
}
return false;
});
PopupMenu は gtk.menu の小さなラッパーです。
public class PopupMenu : Gtk.Menu {
public PopupMenu.from_gtk_widget (Gtk.Widget parent) {
parent.button_release_event.connect((event) => {
if(event.button == 3) this.show_popup();
return true;
});
}
construct {
}
public Gtk.MenuItem add_menu_item (string label) {
var item = new Gtk.MenuItem.with_label(label);
this.append (item);
return item;
}
//Draw the popup at the mouse position
public void show_popup() {
debug("Popup Showing\n");
this.popup(null, null, null, 2, 0);
}
}
アクターは、フローレイアウトのアクター内にあります。このアクターは、透明な gtk ウィンドウ内にあります。デバッグ メッセージが表示されます。
なぜこれが機能しないのですか?ありがとう