c - "Bring to front"OS-X 上的 GTK/C 应用程序

标签 c macos gtk

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

最佳答案

这个问题与 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() 之前自己添加此调用,但对于实际分发您的应用程序,最好保持原样。

关于c - "Bring to front"OS-X 上的 GTK/C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43918827/

相关文章:

objective-c - 在 cocoa 屏幕保护程序中禁用鼠标移动退出并构建 UI?

java - 寻找JAVA之家

macos - WebView 作为响应者

c - 需要帮助创建 FindMaxOverlap 函数

c - 使用 C 的子集进行语法检查

c - 如何保持运行总计

将 10 进制转换为 6 进制

user-interface - 在 Gtk+ 中堆叠小部件

python - 如何更改 GtkImage 显示的图像?

c - 我想为我的应用程序制作一个安装程序