Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel QuiƱones <manuq@laptop.org>2013-05-16 21:57:12 (GMT)
committer Agustin Zubiaga <aguz@localhost.localdomain>2013-06-03 19:07:02 (GMT)
commita3824af77b4e2c5c144ba4e36a691a1547d39da9 (patch)
tree35449ed2e14d5419b1b07afad12cb3e789044fea
parent22daeb55eff4f3474a7a846772db833e11bff8f3 (diff)
Skip the scrollbar value-changed callbacks when we manually change them
-rw-r--r--ImageView.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/ImageView.py b/ImageView.py
index 78b244f..4f19525 100644
--- a/ImageView.py
+++ b/ImageView.py
@@ -90,6 +90,8 @@ class ImageViewer(Gtk.DrawingArea, Gtk.Scrollable):
self._hadj = None
self._vadj = None
+ self._hadj_value_changed_hid = None
+ self._vadj_value_changed_hid = None
self.connect('draw', self.__draw_cb)
@@ -104,13 +106,15 @@ class ImageViewer(Gtk.DrawingArea, Gtk.Scrollable):
if prop.name == 'hadjustment':
if value is not None:
hadj = value
- hadj.connect('value-changed', self.__hadj_value_changed_cb)
+ self._hadj_value_changed_hid = \
+ hadj.connect('value-changed', self.__hadj_value_changed_cb)
self._hadj = hadj
elif prop.name == 'vadjustment':
if value is not None:
vadj = value
- vadj.connect('value-changed', self.__vadj_value_changed_cb)
+ self._vadj_value_changed_hid = \
+ vadj.connect('value-changed', self.__vadj_value_changed_cb)
self._vadj = vadj
def _update_adjustments(self):
@@ -149,12 +153,20 @@ class ImageViewer(Gtk.DrawingArea, Gtk.Scrollable):
# image to the value each adjustment.
if max_topleft[0] != 0:
+ self._hadj.disconnect(self._hadj_value_changed_hid)
self._hadj.set_value(-1 * max_value[0] *
scaled_image_topleft[0] / max_topleft[0])
+ self._hadj_value_changed_hid = \
+ self._hadj.connect('value-changed',
+ self.__hadj_value_changed_cb)
if max_topleft[1] != 0:
+ self._vadj.disconnect(self._vadj_value_changed_hid)
self._vadj.set_value(-1 * max_value[1] *
scaled_image_topleft[1] / max_topleft[1])
+ self._vadj_value_changed_hid = \
+ self._vadj.connect('value-changed',
+ self.__vadj_value_changed_cb)
def __hadj_value_changed_cb(self, adj):
logging.debug("hadj_value_changed_cb")