我刚刚将一个 C 程序从 GTK2 移植到 GTK3。该程序使用GtkDrawingArea
鼠标滚轮在其上使用。切换到 GTK3 后,我无法再正确检测滚轮的使用情况。这是我所做的和得到的:
GTK2 (2.24.10)
- 我将事件掩码设置
GtkDrawingArea
为GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_LEAVE_NOTIFY_MASK
。 - 我将信号处理程序连接
scroll-event
到GtkDrawingArea
. - 一旦我使用滚轮,就会调用信号处理程序,并且 的属性
direction
是or 。GdkEventScroll
GDK_SCROLL_UP
GDK_SCROLL_DOWN
GTK3 (3.4.2)
- 除了上述之外,我还包括
GDK_SMOOTH_SCROLL_MASK
在GtkDrawingArea
. 没有它,我的信号处理程序永远不会被调用。 - 我使用与上述相同的信号处理程序。
- 一旦我使用滚轮,就会调用信号处理程序,并且 is
direction
的GdkEventScroll
属性GDK_SCROLL_SMOOTH
。打电话gdk_event_get_scroll_deltas()
给我总是 0delta_x
和delta_y
。我从来没有看到任何其他方向比GDK_SCROLL_SMOOTH
。
尽管我的鼠标本身只提供“离散”button4/5 事件,但我可以接受平滑滚动事件,但我如何确定滚动事件的方向?
顺便说一句:我在 amd64 上使用 Ubuntu 12.04。