在 OSX 上将新的 GTK 3 窗口置于前台
Posted
技术标签:
【中文标题】在 OSX 上将新的 GTK 3 窗口置于前台【英文标题】:Bring new GTK 3 window to foreground on OSX 【发布时间】:2016-11-26 17:35:30 【问题描述】:如何在 OSX sierra 上将任何新的 GTK 3 窗口置于前台?我打开的任何窗口(使用 gtk-rs 或 python)首先在后台结束。我试过了:
set_modal(true)
set_keep_above(true)
present()
似乎没有任何帮助,我找不到任何关于该方向的错误报告。知道如何实现这一目标吗?
GTK 是通过自制软件安装的:
languitar@miles ~/code/rust (master)> brew info gtk+3
gtk+3: stable 3.22.4 (bottled)
Toolkit for creating graphical user interfaces
http://gtk.org/
/usr/local/Cellar/gtk+3/3.22.4 (1,395 files, 70.0M) *
Poured from bottle on 2016-11-26 at 17:11:24
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gtk+3.rb
==> Dependencies
Build: pkg-config ✔
Required: gdk-pixbuf ✔, atk ✔, gobject-introspection ✔, libepoxy ✔, pango ✔, glib ✔, hicolor-icon-theme ✔
Recommended: gsettings-desktop-schemas ✔
Optional: jasper ✔
【问题讨论】:
您是否检查过您的代码是否可以在 Linux 等其他平台上运行? 主要玩家是您的窗口管理器,他决定新窗口将出现在哪里。你检查 WM 的设置了吗? @jcoppens 很好,那就是 OSX。我不知道如何为 OSX 配置类似的东西。 Gtk 3 在后台使用原生的 cocoa 工具包。这里不需要 X11 仿真。 我假设您使用show_all()
来确定显示窗口。 raise()
怎么样?
【参考方案1】:
四处走动,这个问题很快就结束了,没有显示任何代码。所以我会发布代码应该是什么样的。并不是说你没有尝试过这个。只是想帮忙。
use article::Article;
use homepage;
use gtk;
use gtk::traits::*;
use gdk::ffi::GdkRGBA;
use pango;
fn configure_window(window: >k::Window)
window.set_title("Phoronix Reader");
let (width, height) = (600, 500);
window.set_default_size(width, height);
window.connect_delete_event(|_,_|
gtk::main_quit();
gtk::signal::Inhibit(true)
);
pub fn launch()
gtk::init().unwrap_or_else(|_| panic!("Failed to initialize GTK."));
let window = gtk::Window::new(gtk::WindowType::Toplevel).unwrap();
configure_window(&window);
window.show_all();
gtk::main();
【讨论】:
我基本上已经做到了。不过,该窗口不会出现在其他窗口之上。以上是关于在 OSX 上将新的 GTK 3 窗口置于前台的主要内容,如果未能解决你的问题,请参考以下文章