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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top