[pitivi/ges] timeline: fix selecting in timeline



commit 80cda173df7a7181a0f8314d28bc33531df7a2c8
Author: Matas Brazdeikis <matas brazdeikis lt>
Date:   Sun May 6 00:04:50 2012 +0100

    timeline: fix selecting in timeline

 pitivi/timeline/timeline.py |   30 ++++++++++++++----------------
 1 files changed, 14 insertions(+), 16 deletions(-)
---
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index aa266f0..c131f0e 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -294,25 +294,23 @@ class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable):
 
         return tracks, track_objects
 
-    def _normalize(self, p1, p2, adjust=0):
-        w, h = p2 - p1
-        x, y = p1
-        if w - adjust < 0:
-            w = abs(w - adjust)
-            x -= w
-        else:
-            w -= adjust
-        if h < 0:
-            h = abs(h)
-            y -= h
+    def _normalize(self, p1, p2):
+        w, h = p1 - p2
+        w = abs(w)
+        h = abs(h)
+        x = min(p1[0], p2[0])
+        y = min(p1[1], p2[1])
         return (x, y), (w, h)
 
+    def _get_adjustment(self, xadj=True, yadj=True):
+        return Point(self.app.gui.timeline_ui.hadj.get_value() * xadj,
+                     self.app.gui.timeline_ui.vadj.get_value() * yadj)
+
     def _selectionDrag(self, item, target, event):
         if self._selecting:
             self._got_motion_notify = True
-            cur = self.from_event(event)
-            pos, size = self._normalize(self._mousedown, cur,
-                self.app.gui.timeline_ui.hadj.get_value())
+            cur = self.from_event(event) - self._get_adjustment(True, False)
+            pos, size = self._normalize(self._mousedown, cur)
             self._marquee.props.x, self._marquee.props.y = pos
             self._marquee.props.width, self._marquee.props.height = size
             return True
@@ -321,7 +319,7 @@ class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable):
     def _selectionStart(self, item, target, event):
         self._selecting = True
         self._marquee.props.visibility = goocanvas.ITEM_VISIBLE
-        self._mousedown = self.from_event(event)
+        self._mousedown = self.from_event(event) + self._get_adjustment(False, True)
         self._marquee.props.width = 0
         self._marquee.props.height = 0
         self.pointer_grab(self.get_root_item(), gtk.gdk.POINTER_MOTION_MASK |
@@ -335,7 +333,7 @@ class TimelineCanvas(goocanvas.Canvas, Zoomable, Loggable):
         if not self._got_motion_notify:
             self._timeline.selection.setSelection([], 0)
             self.app.current.seeker.seek(Zoomable.pixelToNs(event.x))
-        else:
+        elif self._timeline is not None:
             self._got_motion_notify = False
             mode = 0
             if event.get_state() & gtk.gdk.SHIFT_MASK:



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]