mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-03-08 04:58:29 +03:00
virt-manager: Only save window dimensions on app exit (bz 1262561)
Rather than on every window change event which spams dconf and hits the disk repeatedly. The new method is roughly what is suggested by https://wiki.gnome.org/HowDoI/SaveWindowState https://bugzilla.redhat.com/show_bug.cgi?id=1262561
This commit is contained in:
parent
b95af3bedc
commit
bcc13dca31
@ -395,6 +395,7 @@ class vmmDetails(vmmGObjectUI):
|
||||
if h <= 0:
|
||||
h = 600
|
||||
self.topwin.set_default_size(w, h)
|
||||
self._window_size = None
|
||||
|
||||
self.oldhwkey = None
|
||||
self.addhwmenu = None
|
||||
@ -586,6 +587,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
self.snapshots.cleanup()
|
||||
self.snapshots = None
|
||||
|
||||
if self._window_size:
|
||||
self.vm.set_details_window_size(*self._window_size)
|
||||
|
||||
self.vm = None
|
||||
self.conn = None
|
||||
self.addhwmenu = None
|
||||
@ -1030,11 +1034,9 @@ class vmmDetails(vmmGObjectUI):
|
||||
##########################
|
||||
|
||||
def window_resized(self, ignore, event):
|
||||
# Sometimes dimensions change when window isn't visible
|
||||
if not self.is_visible():
|
||||
return
|
||||
|
||||
self.vm.set_details_window_size(event.width, event.height)
|
||||
self._window_size = (event.width, event.height)
|
||||
|
||||
def popup_addhw_menu(self, widget, event):
|
||||
ignore = widget
|
||||
|
@ -122,6 +122,7 @@ class vmmManager(vmmGObjectUI):
|
||||
w, h = self.config.get_manager_window_size()
|
||||
self.topwin.set_default_size(w or 550, h or 550)
|
||||
self.prev_position = None
|
||||
self._window_size = None
|
||||
|
||||
self.vmmenu = vmmenu.VMActionMenu(self, self.current_vm)
|
||||
self.connmenu = Gtk.Menu()
|
||||
@ -238,6 +239,10 @@ class vmmManager(vmmGObjectUI):
|
||||
self.connmenu = None
|
||||
self.connmenu_items = None
|
||||
|
||||
if self._window_size:
|
||||
self.config.set_manager_window_size(*self._window_size)
|
||||
|
||||
|
||||
def is_visible(self):
|
||||
return bool(self.topwin.get_visible())
|
||||
|
||||
@ -459,11 +464,9 @@ class vmmManager(vmmGObjectUI):
|
||||
####################
|
||||
|
||||
def window_resized(self, ignore, event):
|
||||
# Sometimes dimensions change when window isn't visible
|
||||
if not self.is_visible():
|
||||
return
|
||||
|
||||
self.config.set_manager_window_size(event.width, event.height)
|
||||
self._window_size = (event.width, event.height)
|
||||
|
||||
def exit_app(self, src_ignore=None, src2_ignore=None):
|
||||
self.emit("action-exit-app")
|
||||
|
Loading…
x
Reference in New Issue
Block a user