Skip to content

Commit ca682eb

Browse files
committed
meldwindow: Stop using configure-event
According to https://wiki.gnome.org/HowDoI/SaveWindowState, we should be using size-allocate and window-state-event.
1 parent 0725a2c commit ca682eb

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

data/ui/meldapp.ui

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
<property name="title" translatable="yes">Meld</property>
88
<property name="icon_name">meld</property>
99
<signal name="delete-event" handler="on_delete_event" swapped="no"/>
10-
<signal name="configure-event" handler="on_configure_event" swapped="no"/>
10+
<signal name="size-allocate" handler="on_size_allocate" swapped="no"/>
11+
<signal name="window-state-event" handler="on_window_state_event" swapped="no"/>
1112
<child>
1213
<object class="GtkVBox" id="appvbox">
1314
<property name="visible">True</property>

meld/meldwindow.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -410,15 +410,22 @@ def on_next_diff_changed(self, doc, have_prev, have_next):
410410
self.actiongroup.get_action("PrevChange").set_sensitive(have_prev)
411411
self.actiongroup.get_action("NextChange").set_sensitive(have_next)
412412

413-
def on_configure_event(self, window, event):
414-
state = event.window.get_state()
413+
def on_size_allocate(self, window, allocation):
414+
gdk_window = window.get_window()
415+
if not gdk_window:
416+
return
415417
nosave = Gdk.WindowState.FULLSCREEN | Gdk.WindowState.MAXIMIZED
416-
if not (state & nosave):
418+
if not (gdk_window.get_state() & nosave):
417419
width, height = self.widget.get_size()
418420
variant = GLib.Variant('(ii)', (width, height))
419421
settings.set_value('window-size', variant)
420422

423+
def on_window_state_event(self, window, event):
424+
state = event.window.get_state()
425+
426+
# TODO: Handle fullscreen
421427
maximised = state & Gdk.WindowState.MAXIMIZED
428+
# fullscreen = state & Gdk.WindowState.FULLSCREEN
422429
window_state = 'maximized' if maximised else 'normal'
423430
settings.set_string('window-state', window_state)
424431

0 commit comments

Comments
 (0)