diff options
author | nick_m <mainsbridge@gmail.com> | 2015-05-23 05:36:03 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2015-05-23 05:36:03 +1000 |
commit | ea8b5a970f7fdc0818fb86c32c93dd564eff941c (patch) | |
tree | 68b2b6c93267d9131aee82ffa9440c27e40b7782 /gtk2_ardour/keyboard.cc | |
parent | 3d599be991a71b7e4611b1c38ee88a77bf1c5460 (diff) |
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.
Diffstat (limited to 'gtk2_ardour/keyboard.cc')
-rw-r--r-- | gtk2_ardour/keyboard.cc | 15 |
1 files changed, 15 insertions, 0 deletions
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); } @@ -256,6 +263,14 @@ ArdourKeyboard::indicates_snap_delta (guint state) } 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) { RelevantModifierKeyMask = GdkModifierType (RelevantModifierKeyMask & ~trim_contents_mod); |