PopupMenu en GTK #
Pregunta
Tengo una ventana GTK que estoy tratando de agregar una función PopupMenuHandler desplaza también de esta manera:
this.scrolledwindow1.PopupMenu += HandlePopupMenu;
y el HandlePopupMenu se ve así:
[GLib.ConnectBefore]
public void HandlePopupMenu(object o, PopupMenuArgs args)
{
Console.WriteLine("test");
Gtk.Menu mbox = new Gtk.Menu();
Gtk.MenuItem Test = new Gtk.MenuItem("test");
Test.Activated += delegate(object sender, EventArgs e) {
Console.WriteLine("test");
};
mbox.Append(Test);
mbox.ShowAll();
mbox.Popup();
}
Mi problema es que este evento no se llama cuando hago clic derecho en la ventana de desplazamiento. lo que estoy asumiendo que debe basado en este . Sólo hay una manipulación de la ScrollEvent otro evento, y nada manejo de los botones del teclado o el ratón. Alguien puede decir a mi por qué esto no está funcionando?
Solución
1) No agregue menú emergente para GtkScrolledWindow
sino que es contenido. La mayor parte de TI de eventos está desactivada por defecto y, en general, los usuarios realmente no quiero ningún popups en sus barras de desplazamiento.
2) Señal de PopupMenu
solamente se invoca para atajos de teclado (Shift + F10 o el botón de menú), no hace clic derecho del ratón. GtkStatusIcon
no se deriva de GtkWidget
por lo que funciona de manera diferente.
Es necesario aplicar señales ButtonPressEvent
y PopupMenu
para obtener el ratón y el teclado para mostrar el menú. GTK + documentación sobre la implementación de menú emergente (C , no en C #, aunque).