有人知道如何在GtkOptionMenu或GtkComboBox中禁用鼠标滚动吗?当您在窗口中滚动时,指针经过这样的小部件并抓取焦点并更改值时,这很烦人!我看到有问题的代码是一段时间前添加的,但似乎没有任何机制可以禁用此功能。我正在使用C语言编程,但对任何语言的帮助都将不胜感激。顺便说一下,我可能需要提到我正在使用GTK 2.10,但需要与GTK 2.4兼容。
以下翻译仅供参考,希望能帮助到有需要的人:
这个方法有效 - 希望对于希望完成相同任务的其他人有所帮助:
/* 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);
gtk_widget_set_events(GTK_WIDGET(box), gtk_widget_get_events(GTK_WIDGET(box)) & (GDK_ALL_EVENTS_MASK - GDK_SCROLL_MASK));