diff options
author | Bruno Coudoin <bruno.coudoin@free.fr> | 2009-11-11 18:59:52 (GMT) |
---|---|---|
committer | Bruno Coudoin <bruno.coudoin@free.fr> | 2009-11-11 18:59:52 (GMT) |
commit | d60371b01e9973a3c6ca6dba4ce92344abed401d (patch) | |
tree | c0753d976c7e99b01b685b3a38c3d0fe1be86819 | |
parent | 5229cc8bc843c26c0bed131eee9a036ccd144e13 (diff) |
Fixed moving flipped items towards the top left or right.
-rw-r--r-- | src/anim-activity/AnimItem.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/anim-activity/AnimItem.py b/src/anim-activity/AnimItem.py index 98ab509..fc38573 100644 --- a/src/anim-activity/AnimItem.py +++ b/src/anim-activity/AnimItem.py @@ -217,6 +217,10 @@ class AnimItem: if(y > self.drawing_area[3]): y = self.drawing_area[3] + if self.item: + return AnimItem.anim.gcomprisBoard.canvas.\ + convert_to_item_space(self.item, x, y) + result = [] tmp = round(((x+(self.step)) - self.drawing_area[0])/self.step) - 1 @@ -226,10 +230,6 @@ class AnimItem: self.drawing_area[1])/self.step) - 1 result.append(float(self.drawing_area[1] + tmp*self.step)) - if self.item: - return AnimItem.anim.gcomprisBoard.canvas.\ - convert_to_item_space(self.item, x, y) - return result # Given two points p1 and p2, return the @@ -373,18 +373,27 @@ class AnimItem: self.old_y = 0 self.save_at_time(AnimItem.anim.doc.timeline.get_time()) elif event.type == gtk.gdk.BUTTON_PRESS: + #(event.x, event.y) = AnimItem.anim.gcomprisBoard.canvas.\ + # convert_from_item_space(item, event.x, event.y) + #print event.x, " ", event.y self.old_x = event.x self.old_y = event.y elif event.type == gtk.gdk.MOTION_NOTIFY: + #(event.x, event.y) = AnimItem.anim.gcomprisBoard.canvas.\ + # convert_from_item_space(item, event.x, event.y) dx = event.x - self.old_x dy = event.y - self.old_y + flip_x = 1 + if item.get_transform() and item.get_transform()[0] < 0: + flip_x = -1 + bounds = self.item.get_bounds() # Check drawing boundaries - if(bounds.x1 + dx < self.drawing_area[0]): - dx = self.drawing_area[0] - bounds.x1 - if(bounds.x2 + dx > self.drawing_area[2]): - dx = self.drawing_area[2] - bounds.x2 + if(bounds.x1 + dx * flip_x < self.drawing_area[0]): + dx = (self.drawing_area[0] - bounds.x1) * flip_x + if(bounds.x2 + dx * flip_x > self.drawing_area[2]): + dx = (self.drawing_area[2] - bounds.x2) *flip_x if(bounds.y1 + dy < self.drawing_area[1]): dy = self.drawing_area[1]- bounds.y1 if(bounds.y2 + dy > self.drawing_area[3]): @@ -577,7 +586,7 @@ class Anchor: self.fixed_y = 0 self.offset_x = 0 self.offset_y = 0 - self.animitem.save_at_time(self.animitem.anim.timeline.get_time()) + self.animitem.save_at_time(self.animitem.anim.doc.timeline.get_time()) elif (event.type == gtk.gdk.MOTION_NOTIFY and event.state & gtk.gdk.BUTTON1_MASK): |