PopupMenu в Gtk # - PullRequest
       21

PopupMenu в Gtk #

3 голосов
/ 17 июля 2009

У меня есть окно прокрутки Gtk, к которому я пытаюсь присоединить функцию PopupMenuHandler, например, так:

this.scrolledwindow1.PopupMenu += HandlePopupMenu;

и HandlePopupMenu выглядит так:

[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();    
}

Моя проблема в том, что это событие никогда не вызывается, когда я щелкаю правой кнопкой мыши по прокручиваемому окну. который я предполагаю, что это должно основываться на этом . Есть только одно другое событие, обрабатывающее ScrollEvent, и ничто не обрабатывает кнопки клавиатуры или мыши. Кто-нибудь может сказать, почему это не работает?

1 Ответ

2 голосов
/ 20 июля 2009

1) Не добавлять всплывающее меню к GtkScrolledWindow, а к его содержимому. Большинство его событий по умолчанию отключено, и, как правило, пользователям действительно не нужны всплывающие окна на полосах прокрутки.

2) PopupMenu Сигнал вызывается только для сочетаний клавиш (Shift + F10 или кнопки меню), но не для щелчка правой кнопкой мыши. GtkStatusIcon не является производным от GtkWidget, поэтому он работает по-другому.

Вам нужно ввести сигналы ButtonPressEvent и PopupMenu, чтобы и мышь, и клавиатура отображали меню. GTK + документация по реализации всплывающего меню (хотя C, но не C #).

...