[pitivi] ui.timeline: optimize key handling seek code a bit more.



commit d1f1fd910c53a4b988e54d35216bacebc4d6a585
Author: Edward Hervey <bilboed bilboed com>
Date:   Tue May 19 19:55:10 2009 +0200

    ui.timeline: optimize key handling seek code a bit more.
---
 pitivi/ui/timeline.py |   42 ++++++++++++++++++++++--------------------
 1 files changed, 22 insertions(+), 20 deletions(-)

diff --git a/pitivi/ui/timeline.py b/pitivi/ui/timeline.py
index 22e04f2..5dd6855 100644
--- a/pitivi/ui/timeline.py
+++ b/pitivi/ui/timeline.py
@@ -236,29 +236,31 @@ class Timeline(gtk.Table, Loggable, Zoomable):
 
     def _keyPressEventCb(self, unused_widget, event):
         kv = event.keyval
+        self.debug("kv:%r", kv)
+        if kv not in [gtk.keysyms.Left, gtk.keysyms.Right]:
+            return False
         mod = event.get_state()
-        frame = long(self.rate * gst.SECOND)
-        now = self.project.pipeline.getPosition()
-
-        if kv == gtk.keysyms.Left:
-            if mod & gtk.gdk.SHIFT_MASK:
-                self.project.pipeline.seekRelative(-gst.SECOND)
-            elif mod & gtk.gdk.CONTROL_MASK:
-                ltime, rtime = self.project.timeline.edges.closest(now)
-                self.project.pipeline.seek(ltime)
-            else:
-                self.project.pipeline.seekRelative(-frame)
-            return True
-        elif kv == gtk.keysyms.Right:
-            if mod & gtk.gdk.SHIFT_MASK:
-                self.project.pipeline.seekRelative(gst.SECOND)
-            elif mod & gtk.gdk.CONTROL_MASK:
+        try:
+            if mod & gtk.gdk.CONTROL_MASK:
+                now = self.project.pipeline.getPosition()
                 ltime, rtime = self.project.timeline.edges.closest(now)
-                self.project.pipeline.seek(rtime)
-            else:
-                self.project.pipeline.seekRelative(frame)
+
+            if kv == gtk.keysyms.Left:
+                if mod & gtk.gdk.SHIFT_MASK:
+                    self.project.pipeline.seekRelative(-gst.SECOND)
+                elif mod & gtk.gdk.CONTROL_MASK:
+                    self.project.pipeline.seek(ltime+1)
+                else:
+                    self.project.pipeline.seekRelative(-long(self.rate * gst.SECOND))
+            elif kv == gtk.keysyms.Right:
+                if mod & gtk.gdk.SHIFT_MASK:
+                    self.project.pipeline.seekRelative(gst.SECOND)
+                elif mod & gtk.gdk.CONTROL_MASK:
+                    self.project.pipeline.seek(rtime+1)
+                else:
+                    self.project.pipeline.seekRelative(long(self.rate * gst.SECOND))
+        finally:
             return True
-        return False
 
     def _buttonPress(self, window, event):
         self.shrink = False



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