The attached patch implements what we discussed on IRC:
1) Install a progress widget ASAP,
2) Install a progress widget every time it's needed,
3) Uninstall the progress widget when it's destroyed (or its
container here) but not before.
If you still encounter ProgressBarWindow, you'll have to try 1
harder ;-)
Vincent
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: [email protected]
# target_branch: http://bazaar.launchpad.net/%7Ebzr-gtk/bzr-gtk/trunk
# testament_sha1: a80e1d1dfaa9bee75c82260668566a1dc4cbc3f8
# timestamp: 2009-06-15 16:14:03 +0200
# base_revision_id: [email protected]\
# bpjckekeq2ojcyvw
#
# Begin patch
=== modified file 'branchview/treeview.py'
--- branchview/treeview.py 2009-06-12 11:34:44 +0000
+++ branchview/treeview.py 2009-06-15 14:02:08 +0000
@@ -110,11 +110,11 @@
"""
gtk.VBox.__init__(self, spacing=0)
- loading_msg_widget = ProgressPanel()
+ self.progress_widget = ProgressPanel()
+ self.pack_start(self.progress_widget, expand=False, fill=True)
if getattr(ui.ui_factory, "set_progress_bar_widget", None) is not None:
# We'are using our own ui, let's tell it to use our widget.
- ui.ui_factory.set_progress_bar_widget(loading_msg_widget)
- self.pack_start(loading_msg_widget, expand=False, fill=True)
+ ui.ui_factory.set_progress_bar_widget(self.progress_widget)
self.scrolled_window = gtk.ScrolledWindow()
self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC,
@@ -125,7 +125,7 @@
self.scrolled_window.add(self.construct_treeview())
- self.iter = None
+ self.path = None
self.branch = branch
self.revision = None
self.index = {}
@@ -136,7 +136,13 @@
gobject.idle_add(self.populate)
- self.connect("destroy", lambda x: self.branch.unlock())
+ self.connect("destroy", self._on_destroy)
+
+ def _on_destroy(self, *ignored):
+ self.branch.unlock()
+ if getattr(ui.ui_factory, "set_progress_bar_widget", None) is not None:
+ # We'are using our own ui, let's tell it to stop using our widget.
+ ui.ui_factory.set_progress_bar_widget(None)
def do_get_property(self, property):
if property.name == 'revno-column-visible':
@@ -152,13 +158,17 @@
elif property.name == 'branch':
return self.branch
elif property.name == 'revision':
- return self.model.get_value(self.iter, treemodel.REVISION)
+ return self.model.get_value(self.model.get_iter(self.path),
+ treemodel.REVISION)
elif property.name == 'revision-number':
- return self.model.get_value(self.iter, treemodel.REVNO)
+ return self.model.get_value(self.model.get_iter(self.path),
+ treemodel.REVNO)
elif property.name == 'children':
- return self.model.get_value(self.iter, treemodel.CHILDREN)
+ return self.model.get_value(self.model.get_iter(self.path),
+ treemodel.CHILDREN)
elif property.name == 'parents':
- return self.model.get_value(self.iter, treemodel.PARENTS)
+ return self.model.get_value(self.model.get_iter(self.path),
+ treemodel.PARENTS)
else:
raise AttributeError, 'unknown property %s' % property.name
@@ -283,6 +293,9 @@
should be broken.
"""
+ if getattr(ui.ui_factory, "set_progress_bar_widget", None) is not None:
+ # We'are using our own ui, let's tell it to use our widget.
+ ui.ui_factory.set_progress_bar_widget(self.progress_widget)
self.progress_bar = ui.ui_factory.nested_progress_bar()
self.progress_bar.update("Loading ancestry graph", 0, 5)
@@ -412,7 +425,7 @@
(path, focus) = treeview.get_cursor()
if (path is not None) and (path != self._prev_cursor_path):
self._prev_cursor_path = path # avoid emitting twice per click
- self.iter = self.model.get_iter(path)
+ self.path = path
self.emit('revision-selected')
def _on_revision_selected(self, widget, event):
=== modified file 'ui.py'
--- ui.py 2009-06-12 11:34:44 +0000
+++ ui.py 2009-06-15 14:02:08 +0000
@@ -201,7 +201,6 @@
pbw = self._progress_bar_widget
if pbw:
pbw.finished()
- self.set_progress_bar_widget(None)
def _progress_updated(self, task):
"""See UIFactory._progress_updated"""
# Begin bundle
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
Y2v/xdyRThQkOLaj3YA=
--
bzr-gtk mailing list
[email protected]
Modify settings or unsubscribe at:
https://lists.canonical.com/mailman/listinfo/bzr-gtk