This patch is required to avoid people from being able to click on
tags that are in the current branch but point at revisions that are
not. Previously, this would cause a KeyError.

Cheers,

Jelmer

-- 
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [EMAIL PROTECTED]
# target_branch: lp:bzr-gtk
# testament_sha1: a965da53f57a4d1f0169de6c3d415d700d274eba
# timestamp: 2008-07-26 21:23:39 +0200
# base_revision_id: [EMAIL PROTECTED]
# 
# Begin patch
=== modified file 'branchview/treeview.py'
--- branchview/treeview.py	2008-07-10 06:23:54 +0000
+++ branchview/treeview.py	2008-07-26 19:23:11 +0000
@@ -93,7 +93,9 @@
                               (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)),
         'tag-added': (gobject.SIGNAL_RUN_FIRST,
                               gobject.TYPE_NONE,
-                              (gobject.TYPE_STRING, gobject.TYPE_STRING))
+                              (gobject.TYPE_STRING, gobject.TYPE_STRING)),
+        'refreshed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+                              ())
     }
 
     def __init__(self, branch, start, maxnum, compact=True):
@@ -124,6 +126,7 @@
         self.iter = None
         self.branch = branch
         self.revision = None
+        self.index = {}
 
         self.start = start
         self.maxnum = maxnum
@@ -179,6 +182,9 @@
         """Return revision id of currently selected revision, or None."""
         return self.get_property('revision')
 
+    def has_revision_id(self, revision_id):
+        return (revision_id in self.index)
+
     def set_revision(self, revision):
         self.set_property('revision', revision)
 
@@ -310,6 +316,7 @@
             else:
                 self.set_revision(revision)
 
+            self.emit('refreshed')
             return False
         finally:
             self.progress_bar.finished()

=== modified file 'viz/branchwin.py'
--- viz/branchwin.py	2008-07-25 13:32:06 +0000
+++ viz/branchwin.py	2008-07-26 19:23:11 +0000
@@ -230,7 +230,6 @@
         tag_image.set_from_file(icon_path("tag-16.png"))
         self.go_menu_tags = gtk.ImageMenuItem("_Tags")
         self.go_menu_tags.set_image(tag_image)
-        self._update_tags()
 
         go_menu.add(go_menu_next)
         go_menu.add(go_menu_prev)
@@ -294,6 +293,7 @@
         self.treeview.connect('revision-activated',
                 self._tree_revision_activated)
 
+        self.treeview.connect('refreshed', lambda w: self._update_tags())
         self.treeview.connect('tag-added', lambda w, t, r: self._update_tags())
 
         for col in ["revno", "date"]:
@@ -572,14 +572,14 @@
 
         if self.branch.supports_tags():
             tags = self.branch.tags.get_tag_dict().items()
-            tags.sort()
-            tags.reverse()
+            tags.sort(reverse=True)
             for tag, revid in tags:
                 tag_image = gtk.Image()
                 tag_image.set_from_file(icon_path('tag-16.png'))
                 tag_item = gtk.ImageMenuItem(tag.replace('_', '__'))
                 tag_item.set_image(tag_image)
                 tag_item.connect('activate', self._tag_selected_cb, revid)
+                tag_item.set_sensitive(self.treeview.has_revision_id(revid))
                 menu.add(tag_item)
             self.go_menu_tags.set_submenu(menu)
 

# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWT9qGoQAAoX/gERUABBR5///
d7XfIL////pQBS9zMDQebq6SIabCSSaaptBPTRpqeptNMqZjSmn6oMRpiZAaGg0HDTTIxGE0wEMA
mmEYJiZDTI0NAJQRE0m00yajRoNAAMgAGgaDQAQ1T1JoG1AaAAAaAAAADQDQJJCMgGjSNEnkKfpT
TYpkAAAaA0eUQSxaNBr/zSNGj69510yadFj0Oipwp6ZYmrryVvjE5kirmWS67OykslCGqAICPyzs
9vJamIwMwmZ+4D+oSZlp1pZlgzUq7sospS1ViLj0qMP95fGcv0OnpV+aRkyEkYRYeSy4RlYvTDB8
2HcmtZMVymOGvR0IEjLDQIqXOkAdJPEJeFnEry6Y0c0GaKDmo1bb4nFuKDdT4m93yfgs3lTFR5Me
U3jQkb1qAsd4uwrBXCQMj2Zi7FygoelMe7ric10r05n1ohOkUB8OjnaMmYA7O/wgFbFR6zwcQODn
DFUnjAmEruRDePTqHQuJvIi+qYGbF7PIYWgeNpEmOJF9oFmTnmlWo2hZde+qp9hX90DFObSA++ii
ZjGGFnzXHOyN2QGhVeswoedD2GRecrQMX7rHM0KJBMH1EppnTNBlZAC1PauFtYypsV2NbUBufBMM
VDIsnt5auIHlIyvxB9rAMyqMQgM71o7iOLKi21hSMQqGQuXUdNoDoPAoO4GqobWjzY9CdRTznno/
gVaHNycy1ziPYt34jBAssyOKvrlEYbAgzTuhicR7wLSSqseUJwHGY+wvIAxIcdSi/PA3l1S1IAUe
CynlNrsirEMy49AHFP0ywEm8jEwIaMXld8jV2hBgIESLQja5mrOfU8DuNYjWEB1pAxLNBh5qXm8r
ralKDIiKBA2iJFGoyeCyWc6gM9AKOzWaJ6SLThLAQWiBICFHcbdhF1iYCyPiI3arkNgAwBiirp4N
1Cc9/Rlt+/T9Sk33Z/U7SMcNpidHTxhglSa7+KXwwXmRWxsg+pd0ZrZR8NvrBXHALnV5v9rc5P1y
3c0uV49Dl1duGWAJNWkthCjEAs84FJjVSuHVxHIcpICcxZJh29AUyGW9dLdPZ0ITeGYtNOpZx+sK
SBLieRGmtgjccfc3TtQ5oMmDoaWnIxNpkiJgDEg+99qWXZeUwP50wEFVWalM0lDjWbdh8eCKhbqz
MDiXkW64qgXNKPRFmwcgdkS1mntzItbdscsqX9xAsm18a1JhZ59eOiR4Kks87ZB3Fyit8Xq9DIVS
V5ciNRwS9R1HE4HA8TwKA85jyJ2gy94vJr9TwPE5bOVa169gXqA9tYzl/KAqFbCTGMYY1ANxwiGF
HjKpepWsBGOSsXNNxCvgTL5reicy0UuhOhVLyyoWzNG6e+WEY+vwzB431nQOBjdWWLGbFZbnRo9m
8DNBs4Z6fM4nGDalK7oroIXSs9N0KKIA9C3dlpXzwjxXT1XSrZmBgWaih6T6dz+2j6pSwSiwq3Lc
Br2/IErNiNrAvifjWiSMAVqu9kFXc7SfPdktttg1qW64MIRiNcBMXDcs6XbMmAZC6sEMhw8xojn+
6lUBsv77zTv2NYWRwjQCW4VDpmwojnBPGMiiqdkrpqJu5ZIi1DZ+eeYLfSnls5n058mTlgrkLteY
BvAj8sVIUzWy3pOLg3cZESrcHnTPXfVLCkQu7nKcxxW1iMVtqevraHuYkYJGzxRNw0c8XLa7ZxZc
Gm7dWuP0KUmUx10uEGjSOSsIRRy+qHEBXSYdcR3VzVAwbly4BzpdjBLTUf3+LuSKcKEgftQ1CA==
-- 
bzr-gtk mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.canonical.com/mailman/listinfo/bzr-gtk

Reply via email to