[pitivi] clipproperties: Keyframes added on play bug fixed
- From: Alexandru Băluț <alexbalut src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] clipproperties: Keyframes added on play bug fixed
- Date: Mon, 28 Aug 2017 22:07:05 +0000 (UTC)
commit 8ecac6ceed709f105294c28e0d882c1598714618
Author: Stefan Popa <stefanpopa2209 gmail com>
Date: Mon Jun 26 11:42:49 2017 +0300
clipproperties: Keyframes added on play bug fixed
When playing the preview, unintended keyframes were sometimes added. This
happened because changes in the source properties led to changes in spin
button values, which were misinterpreted as user inputs.
Differential Revision: https://phabricator.freedesktop.org/D1770
pitivi/clipproperties.py | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/pitivi/clipproperties.py b/pitivi/clipproperties.py
index ca5f2c8..24c44d4 100644
--- a/pitivi/clipproperties.py
+++ b/pitivi/clipproperties.py
@@ -531,6 +531,7 @@ class TransformationProperties(Gtk.Expander, Loggable):
self.source = None
self._selected_clip = None
self.spin_buttons = {}
+ self.spin_buttons_handler_ids = {}
self.set_label(_("Transformation"))
self.builder = Gtk.Builder()
@@ -737,13 +738,17 @@ class TransformationProperties(Gtk.Expander, Loggable):
def __source_property_changed_cb(self, unused_source, unused_element, param):
try:
spin = self.spin_buttons[param.name]
+ spin_handler_id = self.spin_buttons_handler_ids[param.name]
except KeyError:
return
res, value = self.__get_source_property(param.name)
assert res
if spin.get_value() != value:
- spin.set_value(value)
+ # Make sure self._onValueChangedCb doesn't get called here. If that
+ # happens, we might have unintended keyframes added.
+ with spin.handler_block(spin_handler_id):
+ spin.set_value(value)
def _control_bindings_changed(self, unused_track_element, unused_binding):
if self.__own_bindings_change:
@@ -755,9 +760,11 @@ class TransformationProperties(Gtk.Expander, Loggable):
def _update_spin_buttons(self):
for name, spinbtn in list(self.spin_buttons.items()):
+ spin_handler_id = self.spin_buttons_handler_ids[name]
res, value = self.source.get_child_property(name)
assert res
- spinbtn.set_value(value)
+ with spinbtn.handler_block(spin_handler_id):
+ spinbtn.set_value(value)
def __set_prop(self, prop, value):
assert self.source
@@ -789,9 +796,10 @@ class TransformationProperties(Gtk.Expander, Loggable):
def __setup_spin_button(self, widget_name, property_name):
"""Creates a SpinButton for editing a property value."""
spinbtn = self.builder.get_object(widget_name)
- spinbtn.connect("value-changed", self._onValueChangedCb, property_name)
+ handler_id = spinbtn.connect("value-changed", self._onValueChangedCb, property_name)
disable_scroll(spinbtn)
self.spin_buttons[property_name] = spinbtn
+ self.spin_buttons_handler_ids[property_name] = handler_id
def _onValueChangedCb(self, spinbtn, prop):
if not self.source:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]