From ea8b5a970f7fdc0818fb86c32c93dd564eff941c Mon Sep 17 00:00:00 2001 From: nick_m Date: Sat, 23 May 2015 05:36:03 +1000 Subject: Bring back contrained drag modifier with preference setting. - this should work as before, but when applied to a button 1 drag, the constraint is in the first direction travelled. --- gtk2_ardour/keyboard.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'gtk2_ardour/keyboard.cc') diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc index 8a7c811c3c..bdce6badda 100644 --- a/gtk2_ardour/keyboard.cc +++ b/gtk2_ardour/keyboard.cc @@ -48,6 +48,7 @@ accel_map_changed (GtkAccelMap* /*map*/, me->ui.setup_tooltips (); } +guint ArdourKeyboard::constraint_mod = Keyboard::SecondaryModifier; guint ArdourKeyboard::trim_contents_mod = Keyboard::PrimaryModifier; guint ArdourKeyboard::trim_overlap_mod = Keyboard::TertiaryModifier; guint ArdourKeyboard::trim_anchored_mod = Keyboard::TertiaryModifier; @@ -187,6 +188,8 @@ ArdourKeyboard::get_state (void) XMLNode* node = &Keyboard::get_state (); char buf[32]; + snprintf (buf, sizeof (buf), "%d", constraint_mod); + node->add_property ("constraint-modifier", buf); snprintf (buf, sizeof (buf), "%d", trim_contents_mod); node->add_property ("trim-contents-modifier", buf); snprintf (buf, sizeof (buf), "%d", trim_overlap_mod); @@ -208,6 +211,10 @@ ArdourKeyboard::set_state (const XMLNode& node, int version) { const XMLProperty* prop; + if ((prop = node.property ("constraint-modifier")) != 0) { + sscanf (prop->value().c_str(), "%d", &constraint_mod); + } + if ((prop = node.property ("trim-contents-modifier")) != 0) { sscanf (prop->value().c_str(), "%d", &trim_contents_mod); } @@ -255,6 +262,14 @@ ArdourKeyboard::indicates_snap_delta (guint state) return (contains_d && ((contains_s && !equals_s) || !contains_s)); } +void +ArdourKeyboard::set_constraint_modifier (guint mod) +{ + RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~constraint_mod); + constraint_mod = mod; + RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask | constraint_mod); +} + void ArdourKeyboard::set_trim_contents_modifier (guint mod) { -- cgit v1.2.3