我正在尝试列出Gtk :: Widgets,点击时我需要突出显示小部件,但是当用户按下按钮并拖动到另一个小部件时,第一个将“取消强调”并且新的将在enter_notify上突出显示。
我已尝试在多个组合中使用on_enter_notify_event和on_button_press_event(是的,我正在添加事件),但每次按'小部件时,它都会启动拖动事件,并且enter_notify和leave_notify将不会火。
有没有办法忽略拖拽事件?我尝试在它启动时结束它,但我认为问题是on_notify不会在鼠标按下时触发。还有另一种方法吗?
非常感谢任何帮助或建议。
答案 0 :(得分:1)
好吧,显然当一个小部件被激活或点击时,GdkDevice'grab()是小部件并且只向THAT小部件发送事件。所以我从事件中取出了设备,并在其上调用了“ungrab()”,以便其他单元格可以接收事件。然后在我的其他单元格中,我检查on_enter_notify_event中的event->状态以查看鼠标是否已关闭,瞧!单元格突出显示。
bool cell::on_button_press_event(GdkEventButton* event) {
highlight_cell();
gdk_device_ungrab(event->device, event->time);
return true;
}