可以通过GTK发布gtk_menu_popup重点显示菜单?(Can gtk menus displ

2019-09-23 12:25发布

我重构一些代码,通常需要用户点击一个按钮,弹出菜单出现(它出现在按钮旁边),我想要做的是显示弹出菜单中,如果用户在按钮上悬停鼠标如果用户移动到另一个按钮图标预设时间图标,并再次将其隐藏。

然而,通过激活菜单gtk_menu_popup抢断鼠标和键盘焦点,我没有取得什么进展试图抓住重点,为按钮控件。

是否有可能将焦点返回到该按钮的图标?

Answer 1:

调试这竟然是相当麻烦的,因为gtk_menu_popup抓住GDK键盘和指针的焦点,这将阻止一个从通过用gdb单步调试代码,我最终通过运行在一个虚拟的代码,并使用用gdb远程调试会话管理它SSH。

有通过弹出窗口可能从原来的小部件偷焦点几个不同的机制

  1. 通过短暂的窗口关系(如果只有通过parent_menu_shell
  2. 通过gdk_pointer_grab
  3. 通过gtk_grab_add

当我设置parent_menu_shell外壳参数设置为NULL,这意味着我不得不撤消最后两个“截获”,就像这样:

gdk_pointer_ungrab(GDK_CURRENT_TIME);
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
gtk_grab_remove(menu);

该做的伎俩,但焦点被暂时被弹出,这会导致问题太被盗



文章来源: Can gtk menus displayed via gtk_menu_popup release focus?