我有一个绘图区域内的滚动窗口(方便的视窗),这个绘图区域根据传入的motion- notification -events进行自我更新。当我滚动这个区域时,很明显没有运动事件发生,但我想解决这个问题,所以我试着把绘图区域连接起来"scroll-event"信号到相同的动作通知回调。
我在这里面临的问题是这个信号是在滚动窗口之前发出的已经更新了它的视口,所以在回调中,我结束了在滚动之前为真的指针坐标,使它看起来像绘图区域总是"落后一步",当滚动而不移动指针本身的实际指针。我想我可以通过手动提取坐标gdk_window_get_pointer来弥补这一点,但后来我意识到这不能工作,因为当回调开始时,指针在技术上仍然处于旧位置。我还尝试使用g_signal_connect_after,希望它能在viewport被滚动后调用回调,但它没有帮助。
我最后的希望是在滚动事件上启动一个计时器,并在最短的时间后触发回调,但这听起来真的很难看,我希望不惜任何代价避免这种情况。
关于如何实现这一点,有什么想法吗?提前感谢!
一个解决方案是连接到GtkScrolledWindow的"value-changed"信号调整。
来源:https://mail.gnome.org/archives/gtk-app-devel-list/2011-September/msg00014.html