[pitivi] elements: Displaying effects keyframe curves when required



commit b30fc128c0712aa5dc4d98839e4460ab0234c042
Author: Thibault Saunier <tsaunier gnome org>
Date:   Fri Aug 18 10:11:17 2017 -0300

    elements: Displaying effects keyframe curves when required
    
    This was a regression introduced in 536e99c73aa9cda5cbbc2e6eeabcdd9ebb6d8dfd
    "elements: Lazy create the KeyFrame curves".
    
    Fixes T7812
    
    Reviewed-by: Stefan-Adrian Popa <stefanpopa2209 gmail com>
    Differential Revision: https://phabricator.freedesktop.org/D1850

 pitivi/timeline/elements.py |   17 ++++++++++++-----
 1 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/pitivi/timeline/elements.py b/pitivi/timeline/elements.py
index 5da5c92..be32471 100644
--- a/pitivi/timeline/elements.py
+++ b/pitivi/timeline/elements.py
@@ -452,7 +452,7 @@ class TimelineElement(Gtk.Layout, Zoomable, Loggable):
         # We set up the default mixing property right here, if a binding was
         # already set (when loading a project), it will be added later
         # and override that one.
-        self.showDefaultKeyframes()
+        self.showDefaultKeyframes(lazy_render=True)
 
     def release(self):
         if self.__previewer:
@@ -477,9 +477,12 @@ class TimelineElement(Gtk.Layout, Zoomable, Loggable):
 
     def showKeyframes(self, ges_elem, prop):
         self.__setKeyframes(ges_elem, prop)
+        self.__create_keyframe_curve(ges_elem)
 
-    def showDefaultKeyframes(self):
+    def showDefaultKeyframes(self, lazy_render=False):
         self.__setKeyframes(self._ges_elem, self._getDefaultMixingProperty())
+        if not lazy_render:
+            self.__create_keyframe_curve()
 
     def __setKeyframes(self, ges_elem, prop):
         self.__removeKeyframes()
@@ -520,10 +523,13 @@ class TimelineElement(Gtk.Layout, Zoomable, Loggable):
             assert source.set(inpoint, val)
             assert source.set(inpoint + self._ges_elem.props.duration, val)
 
-    def __create_keyframe_curve(self):
+    def __create_keyframe_curve(self, ges_elem=None):
         """Creates required keyframe curve."""
         self.__removeKeyframes()
-        binding = self._ges_elem.get_control_binding(self.__controlledProperty.name)
+        if not ges_elem:
+            ges_elem = self._ges_elem
+
+        binding = ges_elem.get_control_binding(self.__controlledProperty.name)
         self.keyframe_curve = KeyframeCurve(self.timeline, binding)
         self.keyframe_curve.connect("enter", self.__curveEnterCb)
         self.keyframe_curve.connect("leave", self.__curveLeaveCb)
@@ -578,7 +584,8 @@ class TimelineElement(Gtk.Layout, Zoomable, Loggable):
     def __update_keyframe_curve_visibility(self):
         """Updates the keyframes widget visibility by adding or removing it."""
         if self._ges_elem.selected and len(self.timeline.selection) == 1:
-            self.add(self.keyframe_curve)
+            if not self.keyframe_curve.get_parent():
+                self.add(self.keyframe_curve)
         else:
             self.remove(self.keyframe_curve)
 


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