Hi Jelmer, On Sat, Apr 11, 2009 at 11:28:57PM -0400, Jelmer Vernooij wrote: > do we really need to be writing the window sizes every time they change, > can't we just wait until the app is closed?
You are right, saving the sizes on exit should be good enough. May I suggest the attached patch instead of the original proposal? Greetings, Torsten # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: [email protected] # target_branch: lp:bzr-gtk # testament_sha1: 526ed34bd1437cf4e1a99ba3b506c8bb7155fa7c # timestamp: 2009-04-15 21:14:18 +0200 # base_revision_id: [email protected] # # Begin patch === modified file 'viz/branchwin.py' --- viz/branchwin.py 2008-11-28 16:42:25 +0000 +++ viz/branchwin.py 2009-04-15 17:17:05 +0000 @@ -48,8 +48,6 @@ self.maxnum = maxnum self.config = GlobalConfig() - self._sizes = {} # window and widget sizes - if self.config.get_user_option('viz-compact-view') == 'yes': self.compact_view = True else: @@ -69,7 +67,7 @@ height = int(monitor.height * 0.75) self.set_default_size(width, height) self.set_size_request(width/3, height/3) - self.connect("size-allocate", self._on_size_allocate, 'viz-window-size') + self._save_size_on_destroy(self, 'viz-window-size') # FIXME AndyFitz! icon = self.render_icon(gtk.STOCK_INDEX, gtk.ICON_SIZE_BUTTON) @@ -104,6 +102,15 @@ self.construct() + def _save_size_on_destroy(self, widget, config_name): + """Creates a hook that saves the size of widget to config option + config_name when the window is destroyed/closed.""" + def save_size(src): + width, height = widget.allocation.width, widget.allocation.height + value = '%sx%s' % (width, height) + self.config.set_user_option(config_name, value) + self.connect("destroy", save_size) + def set_revision(self, revid): self.treeview.set_revision_id(revid) @@ -315,7 +322,7 @@ else: (width, height) = self.get_size() align.set_size_request(width, int(height / 2.5)) - align.connect('size-allocate', self._on_size_allocate, 'viz-graph-size') + self._save_size_on_destroy(align, 'viz-graph-size') align.show() return align @@ -358,7 +365,7 @@ if size: width, height = size self.revisionview.set_size_request(width, height) - self.revisionview.connect('size-allocate', self._on_size_allocate, 'viz-revisionview-size') + self._save_size_on_destroy(self.revisionview, 'viz-revisionview-size') self.revisionview.show() self.revisionview.set_show_callback(self._show_clicked_cb) self.revisionview.connect('notify::revision', self._go_clicked_cb) @@ -597,25 +604,9 @@ if size: width, height = [int(num) for num in size.split('x')] # avoid writing config every time we start - self._sizes[name] = (width, height) return width, height return None - def _on_size_allocate(self, widget, allocation, name): - """When window has been resized, save the new size.""" - width, height = 0, 0 - if name in self._sizes: - width, height = self._sizes[name] - - size_changed = (width != allocation.width) or \ - (height != allocation.height) - - if size_changed: - width, height = allocation.width, allocation.height - self._sizes[name] = (width, height) - value = '%sx%s' % (width, height) - self.config.set_user_option(name, value) - def show_diff(self, revid=None, parentid=None): """Open a new window to show a diff between the given revisions.""" from bzrlib.plugins.gtk.diff import DiffWindow # Begin bundle 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 DOjDDQSmtWBoJjMFsez/xdyRThQkECFS/YA= -- bzr-gtk mailing list [email protected] Modify settings or unsubscribe at: https://lists.canonical.com/mailman/listinfo/bzr-gtk
