2017-07-23 3 views
1

Bearbeiten: korrigierter Code.Wie kann Gtk.ListBoxRow mit der rechten Maustaste auf einen Bereich klicken?

Funktioniert nicht. Druckt nichts. Aber dieser andere funktioniert gut

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); 

wie es die Debug-Nachricht druckt. Ist es möglich, mit Rechtsklick auf den ListBoxRow in einem beliebigen Bereich zu arbeiten, unabhängig davon, was seine Kinder sind?

Antwort

2

Eine Möglichkeit, dieses Problem zu lösen, wäre eine Gtk.EventBox als unmittelbares Kind jeden Gtk.ListBoxRow zu verwenden und dann die EventBox als Container für die Zeile Inhalt verwenden:

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

Dank. Es funktioniert sehr sauber. Richtig, append_val ist keine Methode von ListBox. Ich mischte es mit einem GLib.Array, das ich hatte, als ich meine Frage stellte. Ich werde die Frage bearbeiten und beheben. Vielen Dank. –

+0

@g_l Ok, ich entferne die Randnotiz. Viel Glück –

+0

Es ist in Ordnung, Sie müssen es nicht entfernen. Sie können aber wenn Sie wollen. :) –

Verwandte Themen