我重构一些代码,通常需要用户点击一个按钮,弹出菜单出现(它出现在按钮旁边),我想要做的是显示弹出菜单中,如果用户在按钮上悬停鼠标如果用户移动到另一个按钮图标预设时间图标,并再次将其隐藏。
然而,通过激活菜单gtk_menu_popup
抢断鼠标和键盘焦点,我没有取得什么进展试图抓住重点,为按钮控件。
是否有可能将焦点返回到该按钮的图标?
我重构一些代码,通常需要用户点击一个按钮,弹出菜单出现(它出现在按钮旁边),我想要做的是显示弹出菜单中,如果用户在按钮上悬停鼠标如果用户移动到另一个按钮图标预设时间图标,并再次将其隐藏。
然而,通过激活菜单gtk_menu_popup
抢断鼠标和键盘焦点,我没有取得什么进展试图抓住重点,为按钮控件。
是否有可能将焦点返回到该按钮的图标?
调试这竟然是相当麻烦的,因为gtk_menu_popup
抓住GDK键盘和指针的焦点,这将阻止一个从通过用gdb单步调试代码,我最终通过运行在一个虚拟的代码,并使用用gdb远程调试会话管理它SSH。
有通过弹出窗口可能从原来的小部件偷焦点几个不同的机制
parent_menu_shell
) gdk_pointer_grab
gtk_grab_add
当我设置parent_menu_shell
外壳参数设置为NULL,这意味着我不得不撤消最后两个“截获”,就像这样:
gdk_pointer_ungrab(GDK_CURRENT_TIME);
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
gtk_grab_remove(menu);
该做的伎俩,但焦点被暂时被弹出,这会导致问题太被盗