Как отключить прокрутку колесика мыши в GtkOptionMenu / GtkComboBox - PullRequest
2 голосов
/ 02 ноября 2010

Кто-нибудь знает, как отключить прокрутку мыши в GtkOptionMenu или GtkComboBox?Это раздражает, когда вы прокручиваете окно и указатель пропускается над таким виджетом, который захватывает фокус и изменяет значение!

Я вижу, что код нарушения был добавлен недавноно, кажется, нет никакого механизма для отключения этой функции.

Я работаю в C, но помощь на любом языке будет высоко ценится.

PS Я должен упомянутьчто я использую GTK 2.10, но нужна совместимость с GTK 2.4.

Ответы [ 2 ]

2 голосов
/ 13 января 2011

Это работает - надеюсь, может помочь кому-то еще, кто хочет сделать то же самое:

/* Create new closure (callback) to replace class default */   
GClosure * new_closure = 
  g_cclosure_new_object( G_CALLBACK(handler), /* my event handler */
                         G_OBJECT(gobject) /* use any static GObject to keep closure alive */
                       );

GType type = gtk_option_menu_get_type();

/* Get signal_id for "scroll_event" */
guint signal_id = g_signal_lookup("scroll_event", type);

/* Override default closure for scroll_event signal */
g_signal_override_class_closure(signal_id, type, new_closure);
1 голос
/ 02 ноября 2010

Вы можете попробовать отключить события прокрутки на виджете:

gtk_widget_set_events(GTK_WIDGET(box), gtk_widget_get_events(GTK_WIDGET(box)) & (GDK_ALL_EVENTS_MASK - GDK_SCROLL_MASK));
...