【问题标题】:"Bring to front" a GTK/C application on OS-X在 OS-X 上“展示”GTK/C 应用程序
【发布时间】:2017-05-11 14:47:53
【问题描述】:

我正在开发一个在 GNU/Linux 和 OS-X 上运行的应用程序。 在 linux 上,如果我用命令行启动应用程序,我没有问题。在 OS-X 上,应用程序启动但不在“前面”。我必须单击 Dock 中的图标才能看到该应用程序。有没有办法在启动时将应用程序放在前面。

【问题讨论】:

  • 你试过gtk_window_set_urgency_hint ()吗?
  • 好的,多亏了你,我做到了。在 Glade 中,我将属性“urgency_hint”设置为 TRUE。它正在工作。所以你是对的。非常感谢。
  • 哦,不。对不起。它不起作用
  • 如果gtk_window_present() 不起作用,它可能是一个 Gtk on OSX 错误,Gtk 版本是多少?
  • gtk_window_present dors 确实不起作用。我使用的是最后一个稳定版本。

标签: c macos gtk


【解决方案1】:

这个问题与 OS X 的进程启动模型有关,与 GTK+ 无关。解决此问题的唯一正确且可持续的方法是使用 .app 捆绑包。

在 OS X 上运行应用程序时,应用程序需要在使用 NSApplication 方法 activateIgnoringOtherApps: 设置其激活策略后明确要求置于最前面。但是,当 Launch Services 启动 .app 包时,它会自动处理此问题。在您的代码中显式调用activateIgnoringOtherApps: 只会让事情变得更加复杂,以便您正确处理所有事情。 I asked this question a while ago; the answer there explains in more detail.

出于同样的原因,GTK+ 本身也不会进行此调用。如果您想进行开发,您可以在 gtk_main() 之前自己添加此调用,但对于实际分发您的应用程序,最好保持原样。

【讨论】:

  • 谢谢。这个答案很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多