summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyboard.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2015-05-23 05:36:03 +1000
committernick_m <mainsbridge@gmail.com>2015-05-23 05:36:03 +1000
commitea8b5a970f7fdc0818fb86c32c93dd564eff941c (patch)
tree68b2b6c93267d9131aee82ffa9440c27e40b7782 /gtk2_ardour/keyboard.cc
parent3d599be991a71b7e4611b1c38ee88a77bf1c5460 (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.cc15
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);