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:
Cole Robinson 2015-09-13 14:07:43 -04:00
parent b95af3bedc
commit bcc13dca31
2 changed files with 11 additions and 6 deletions

View File

@ -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

View File

@ -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")