首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gtk菜单可以通过gtk_menu_popup release focus显示吗?

gtk菜单可以通过gtk_menu_popup release focus显示吗?
EN

Stack Overflow用户
提问于 2012-10-05 00:48:01
回答 1查看 650关注 0票数 2

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

然而,通过gtk_menu_popup激活菜单会偷走鼠标和键盘的焦点,因此我在尝试为按钮小部件获取焦点时几乎没有取得什么进展。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-07 23:08:52

调试这被证明是相当麻烦的,因为gtk_menu_popup抓住了gdk键盘和指针焦点,这阻止了人们使用gdb单步执行代码,我最终通过在VM中运行代码并通过SSH使用gdb的远程调试会话来管理它。

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

通过瞬态窗口关系的

  1. (仅当您传递parent_menu_shell)
  2. Via gdk_pointer_grab
  3. Via gtk_grab_add

代码语言:javascript
运行
复制
gdk_pointer_ungrab(GDK_CURRENT_TIME);
gdk_keyboard_ungrab(GDK_CURRENT_TIME);
gtk_grab_remove(menu);

这确实起到了作用,但焦点被弹出窗口暂时偷走了,这也会导致问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12731981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档