如何在GtkOptionMenu / GtkComboBox中禁用鼠标滚轮滚动

时间:2010-11-02 11:02:13

标签: c gtk scroll mouse mousewheel

有谁知道如何在GtkOptionMenu或GtkComboBox中禁用鼠标滚动?当你滚动窗口并且指针通过这样一个抓取焦点并改变值的小部件时,这很烦人!

我看到offending code被添加了一段时间,但似乎没有任何机制来禁用此功能。

我在C工作,但是非常感谢任何语言的帮助。

P.S。我应该提一下,我使用的是GTK 2.10,但需要兼容GTK 2.4。

2 个答案:

答案 0 :(得分:2)

这有效 - 我希望可以帮助其他想要做同样事情的人:

/* 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 :(得分:1)

您可以尝试在窗口小部件上禁用滚动事件:

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