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

Reply via email to