Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter.bender@gmail.com>2013-02-22 19:57:34 (GMT)
committer Walter Bender <walter.bender@gmail.com>2013-02-22 19:57:34 (GMT)
commit2ca3c1f4f674054da054548776e0ae27e90487b7 (patch)
treed90ca6a2d6e5f3a22e1453ed0a4a7ec8c27d9220
parentc66a597464db2d07ffaeb7856f34d4533ea14a18 (diff)
buffer mouse moves when dragging so as not to outpace GTK
-rw-r--r--TurtleArt/tawindow.py27
1 files changed, 21 insertions, 6 deletions
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index f6df191..ccaaec2 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -1250,8 +1250,11 @@ before making changes to your Turtle Blocks program'))
self.dragging_canvas[2] = y
if spr is None:
if not self.running_blocks and not self.hw in (
- XO1, XO15, XO175, XO4):
+ XO1, XO15, XO175, XO30):
self.dragging_canvas[0] = True
+ self.dragging_counter = 0
+ self.dragging_dx = 0
+ self.dragging_dy = 0
return True
self.dragging_canvas[0] = False
self.selected_spr = spr
@@ -2133,11 +2136,18 @@ before making changes to your Turtle Blocks program'))
''' Process mouse movements '''
if self.running_sugar and self.dragging_canvas[0]:
- dx = self.dragging_canvas[1] - x
- dy = self.dragging_canvas[2] - y
- self.dragging_canvas[1] = x
- self.dragging_canvas[2] = y
- self.activity.adjust_sw(dx, dy)
+ # Don't adjust with each mouse move or GTK cannot keep pace.
+ if self.dragging_counter < 10:
+ self.dragging_dx += self.dragging_canvas[1] - x
+ self.dragging_dy += self.dragging_canvas[2] - y
+ self.dragging_canvas[1] = x
+ self.dragging_canvas[2] = y
+ self.dragging_counter += 1
+ else:
+ self.activity.adjust_sw(self.dragging_dx, self.dragging_dy)
+ self.dragging_counter = 0
+ self.dragging_dx = 0
+ self.dragging_dy = 0
return True
self.block_operation = 'move'
@@ -2309,6 +2319,11 @@ before making changes to your Turtle Blocks program'))
def button_release(self, x, y):
if self.running_sugar and self.dragging_canvas[0]:
+ if self.dragging_counter > 0:
+ self.activity.adjust_sw(self.dragging_dx, self.dragging_dy)
+ self.dragging_counter = 0
+ self.dragging_dx = 0
+ self.dragging_dy = 0
self.dragging_canvas[0] = False
self.dragging_canvas[1] = x
self.dragging_canvas[2] = y