c/c++开发分享可以通过gtk_menu_popup发布焦点显示gtk菜单吗?

我正在重构一些代码,通常需要用户单击按钮才能显示弹出菜单(它出现在按钮旁边),如果用户将鼠标hover在按钮上,我要做的就是显示弹出菜单预设持续时间的图标,如果用户移动到另一个按钮图标,则再次隐藏它。

但是,通过gtk_menu_popup激活菜单会窃取鼠标和键盘焦点,我在尝试抓取按钮小部件的焦点方面几乎没有取得任何进展。

是否可以将焦点返回到按钮图标?

    调试这个是非常麻烦的,因为gtk_menu_popup抓住了gdk键盘和指针焦点,这阻止了用gdb踩过代码,我最终通过在VM中运行代码并使用与gdb的远程调试会话来管理它SSH。

    弹出窗口可以通过一些不同的机制从原始窗口小部件中窃取焦点

    当我将parent_menu_shell shell参数设置为NULL时,这意味着我必须撤消最后两个’抓取’,如下所示:

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

    这样就可以解决问题,但是弹出会暂时隐藏焦点,这也会导致问题

      以上就是c/c++开发分享可以通过gtk_menu_popup发布焦点显示gtk菜单吗?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/546005.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注