首页 > 解决方案 > 跨平台 Gtk3 应用,菜单栏一开始无响应

问题描述

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

我从 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 );
}

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

然而,那么:

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

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

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

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

标签: c++macosgtk3menubarxcode12

解决方案


推荐阅读