2

我使用 gtk3 和 gtkmm。我想在 Wayland 上移动一个窗口。

然而这似乎不可能。我尝试使用Gtk::Window::move方法和Gdk::Window::move方法。我也type_hint开始Gtk::Window打电话Gtk::Window::set_transient_for。这些都不适用于韦兰,它只是不动。并且还调用Gtk::Window::set_transient_for“子窗口”使我的TYPE_HINT_DIALOG“子窗口”不再停留在主窗口之上,这在调用此方法之前有效。

然而,我在gtkmm: Gdk::Window Class Reference中读到了这个

对于顶层窗口,窗口管理器可能会忽略或修改移动;无论如何,您可能应该在 Gtk::Window 小部件上使用gtk_window_move()1,而不是使用 GDK 函数。对于子窗口,移动将可靠地成功

它说移动子窗口有效。但我不知道“子窗口”是什么意思。

现在我想知道:

  1. 这是真的?
  2. 如何使某个窗口成为另一个窗口的子窗口以移动子窗口(这是Gtk::Window::set_transient_for要走的路)?
  3. 我能否以某种方式在 Wayland 上使用 gtk 移动(顶层)窗口(例如地下或其他东西)

注意:也欢迎使用 C 代码(gtk-code)!

编辑:只想注意:Qt5 使用 app-option "-platform wayland" 是一样的。Qt5 在使用 Wayland 时不会移动窗口。


1我猜这是一个错误,应该是Gtk::Window::move(int x, int y)

4

0 回答 0