From: <ef...@us...> - 2010-06-24 21:17:39
|
Revision: 8466 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8466&view=rev Author: efiring Date: 2010-06-24 21:17:30 +0000 (Thu, 24 Jun 2010) Log Message: ----------- backend_gtk: don't use idle events for draw_rubberband. Use of idle events for draw_rubberband was a peculiarity of backend_gtk. When using zoom-to-rect, it often caused a rubberband draw event to occur after the canvas redraw at the end of the zoom, leaving the canvas showing the state before the zoom action instead of showing the result of the action. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py 2010-06-24 18:25:16 UTC (rev 8465) +++ trunk/matplotlib/lib/matplotlib/backends/backend_gtk.py 2010-06-24 21:17:30 UTC (rev 8466) @@ -611,11 +611,9 @@ self.win = window gtk.Toolbar.__init__(self) NavigationToolbar2.__init__(self, canvas) - self._idle_draw_id = 0 def set_message(self, s): - if self._idle_draw_id == 0: - self.message.set_label(s) + self.message.set_label(s) def set_cursor(self, cursor): self.canvas.window.set_cursor(cursord[cursor]) @@ -644,7 +642,8 @@ h = abs(y1 - y0) rect = [int(val)for val in min(x0,x1), min(y0, y1), w, h] - try: lastrect, imageBack = self._imageBack + try: + lastrect, imageBack = self._imageBack except AttributeError: #snap image back if event.inaxes is None: @@ -655,16 +654,9 @@ b = int(height)-(b+h) axrect = l,b,w,h self._imageBack = axrect, drawable.get_image(*axrect) - drawable.draw_rectangle(gc, False, *rect) - self._idle_draw_id = 0 else: - def idle_draw(*args): - drawable.draw_image(gc, imageBack, 0, 0, *lastrect) - drawable.draw_rectangle(gc, False, *rect) - self._idle_draw_id = 0 - return False - if self._idle_draw_id == 0: - self._idle_draw_id = gobject.idle_add(idle_draw) + drawable.draw_image(gc, imageBack, 0, 0, *lastrect) + drawable.draw_rectangle(gc, False, *rect) def _init_toolbar(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |