我重构了一些代码,这些代码通常需要用户点击一个按钮才能出现弹出菜单(它出现在按钮旁边),我试图做的是,如果用户将鼠标悬停在按钮图标上一段预设的时间,则显示弹出菜单,如果用户移动到另一个按钮图标上,则再次隐藏它。
然而,通过gtk_menu_popup激活菜单会偷走鼠标和键盘的焦点,因此我在尝试为按钮小部件获取焦点时几乎没有取得什么进展。
是否可以将焦点返回到按钮图标?
发布于 2012-10-07 23:08:52
调试这被证明是相当麻烦的,因为gtk_menu_popup抓住了gdk键盘和指针焦点,这阻止了人们使用gdb单步执行代码,我最终通过在VM中运行代码并通过SSH使用gdb的远程调试会话来管理它。
弹出窗口可以通过几种不同的机制从原始小部件中窃取焦点
通过瞬态窗口关系的
parent_menu_shell)gdk_pointer_grabgtk_grab_add时
gdk_pointer_ungrab(GDK_CURRENT_TIME);
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
gtk_grab_remove(menu);这确实起到了作用,但焦点被弹出窗口暂时偷走了,这也会导致问题
https://stackoverflow.com/questions/12731981
复制相似问题