GtkHeaderBar 付きの GtkWindow のリサイズ。
以前こんなことを書いた。
GTK+ 3.20 GtkHeaderBar and CSS | PaePoi
もう少し細かく判った。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk class Win(Gtk.ApplicationWindow): def __init__(self, app): Gtk.ApplicationWindow.__init__(self, application=app) # Headerbar self.headerbar = Gtk.HeaderBar(show_close_button=True) self.set_titlebar(self.headerbar) # Button button = Gtk.Button(label="Click !!!") button.connect("clicked", self.on_button_clicked) self.add(button) def on_button_clicked(self, button): print(self.get_allocated_width(), self.get_allocated_height()) w, h = self.get_size() print(w, h) class App(Gtk.Application): def __init__(self): Gtk.Application.__init__(self) def do_activate(self): w = Win(self) w.show_all() app = App() app.run()
get_allocated_* と get_size で値が違う。
ちなみに GtkHeaderbar を消すと同一の値になる。
見た目で解るけどクライアント領域のサイズですね。
window.get_size と window.resize が共通サイズになるようだ。
ということでサイズの保存にはコチラを使いましょう。
ついでに、GVariant.deep_unpack は Gjs でないと使えないのね。
Gjs も地味に便利にしているところがあったのね。