[pitivi: 1/3] Fix moving multiple objects when the focus is not the earliest object.



commit 282989bfa26f2f2b00e11f8d3f082307a94fb904
Author: Alessandro Decina <alessandro d gmail com>
Date:   Fri Jul 10 17:01:05 2009 +0200

    Fix moving multiple objects when the focus is not the earliest object.

 pitivi/timeline/timeline.py |   10 +++++-----
 tests/test_timeline.py      |   15 +++++++++++++++
 2 files changed, 20 insertions(+), 5 deletions(-)
---
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 20cfd4a..a90b826 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -1044,7 +1044,7 @@ class MoveContext(EditingContext):
                     self._getTrackObjectValues(track_object)
 
         # calculate offsets of clips relative to earliest time, min priority
-        self.offsets = self._getOffsets(self.earliest, self.min_priority,
+        self.offsets = self._getOffsets(self.focus.start, self.focus.priority,
                 timeline_objects)
 
         self.focal_offset = (focus.start - self.earliest,
@@ -1059,8 +1059,8 @@ class MoveContext(EditingContext):
         self._restoreTrackObjectValues(self.default_originals)
 
     def _defaultTo(self, position, priority):
-        position = max(0, position - self.focal_offset[0])
-        priority = max(0, priority - self.focal_offset[1])
+        position = max(position, self.focal_offset[0])
+        priority = max(priority, self.focal_offset[1])
         for obj, (s_offset, p_offset) in self.offsets.iteritems():
             obj.setStart(position + s_offset, snap=self._snap)
             obj.priority = priority + p_offset
@@ -1076,8 +1076,8 @@ class MoveContext(EditingContext):
         @type priority: C{long}
         """
 
-        position = max(0, position - self.focal_offset[0])
-        priority = max(0, priority - self.focal_offset[1])
+        position = max(position, self.focal_offset[0])
+        priority = max(priority, self.focal_offset[1])
         self.focus.setStart(position, snap = self._snap)
         self.focus.priority = priority
 
diff --git a/tests/test_timeline.py b/tests/test_timeline.py
index e35ea27..c33cbc1 100644
--- a/tests/test_timeline.py
+++ b/tests/test_timeline.py
@@ -720,6 +720,21 @@ class TestContexts(TestCase):
         self.failUnlessEqual(self.track_object2.start, 19 * gst.SECOND)
         self.failUnlessEqual(self.track_object3.start, 29 * gst.SECOND)
 
+    def testMoveContextFocusNotEarliest(self):
+        self.focus.start = 10 * gst.SECOND
+        self.focus.duration = 5 * gst.SECOND
+        self.track_object2.start = 1 * gst.SECOND
+        self.track_object2.duration = 9 * gst.SECOND
+        self.track_object3.start = 11 * gst.SECOND
+        self.track_object3.duration = 10 * gst.SECOND
+        context = MoveContext(self.timeline, self.focus, self.other)
+        context.editTo(20 * gst.SECOND, 0)
+        context.finish()
+
+        self.failUnlessEqual(self.focus.start, 20 * gst.SECOND)
+        self.failUnlessEqual(self.track_object2.start, 11 * gst.SECOND)
+        self.failUnlessEqual(self.track_object3.start, 21 * gst.SECOND)
+
     def testTrimStartContext(self):
         self.focus.start = 1 * gst.SECOND
         self.focus.in_point = 3 * gst.SECOND



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