我正在使用 Gtk + 3 应用程序,该应用程序大部分时间都可能全屏使用,但需要在全屏和非全屏之间切换,同时保持对位于标题栏。问题是,由于标题栏是窗口装饰的一部分,当窗口全屏时它会被隐藏。
我当前的kludge所以确保控件始终可用如下:
设置
Gtk.Window
,其中Gtk.Box
为第一个孩子Gtk.HeaderBar
(附加全屏幕togglebutton)Gtk.HeaderBar
Gtk.Box
当窗口全屏显示时
Gtk.HeaderBar
标题栏Gtk.Window
Gtk.HeaderBar
打包到Gtk.Box
(窗口的第一个孩子)中。
这导致Gtk.HeaderBar
位于窗口的底部,所以Gtk.HeaderBar
重新定位到Gtk.Box
当窗口取消全屏时
Gtk.HeaderBar
gtk.Box
Gtk.Window
的标题栏gtk_window_set_titlebar() called on a realized window
(谁在意,只是警告)这很有效,但它看起来非常像一个黑客,而且比它本来应该更复杂。我错过了什么,有一种更简单的方法吗?
我知道有几个基于Gtk + 3的应用程序具有我追求的标题栏行为(例如gedit),但我无法确定如何实现它。任何见解将不胜感激。
此外,这里有一个GitHub要点,其中包含我当前hacky解决方案的完整工作示例:https://gist.github.com/KurtJacobson/6b045b6fc38907a2f18c38f6de2929e3
我会接受任何(编程)语言的答案。