跨平台 Gtk3 应用,菜单栏一开始无响应

问题描述

我正在用 C++ 编写一个跨平台的 Gtk3 应用程序。最近我一直致力于与 MacOS 的集成:

  • 通过 Homebrew 获得的 Gtkmm 3.24;
  • XCode 12.0;
  • MacOS Catalina 10.15。

我从 Gtk::Application 派生了我的应用程序类。应用程序对象覆盖调用基类“on_startup()”的“on_startup()”,然后使用 Gtk 构建器资源从 XML 文件构造 Gio::Menu 对象,然后使用“Gtk::Application::set_app_menu( )' 来安装它:

MyApplication::on_startup()
{
  Gtk::Application::on_startup();

  // skipping details: ... Gtk builder reads Gio::Menu object from resource file ...
  set_app_menu( pMenu );
}

当我第一次启动我的应用程序时:

  • 菜单栏没有响应。应用程序菜单出现在屏幕顶部栏中的 Apple 菜单旁边,但都没有响应鼠标点击;
  • 除了冻结的菜单栏外,应用程序运行正常,其主窗口响应。

但是,那么:

  • 点击任何其他打开的应用程序的窗口,该应用程序的菜单栏就会出现;
  • 点击我的应用程序的窗口切换回它,它的菜单栏返回并且现在可以完美运行。

这是 100% 可重现的(起初冻结,切换到另一个应用程序然后返回,现在菜单可以工作了)。

我在 XCode 中创建了另一个项目并构建了 Gtkmm 示例“app_and_win_menus”,示例应用程序的行为方式完全相同。

所以我想我真的只是在寻找一种解决方法。我一直在网上搜索有关此问题的任何信息,并看到其他人普遍抱怨 MacOS 上的菜单栏冻结,但没有专门针对 Gtk(这台 Mac 上的所有其他应用程序都可以正常工作,只有我使用 Gtk+/Gtkmm 构建的应用程序) 3.24 显示此问题)。

我意识到这听起来有点像错误报告,这里可能不是提出它的地方,但我不确定从哪里开始。非常感谢任何信息。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...