summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyboard.cc
diff options
context:
space:
mode:
authornick_m <mainsbridge@gmail.com>2015-05-22 02:12:58 +1000
committernick_m <mainsbridge@gmail.com>2015-05-22 02:12:58 +1000
commiteaf49f02ff92f22cbfa214ae89ec0a2fc3861d29 (patch)
tree6d35ff13c38aef1e91fbcb0ff10ee84f94d1ebc1 /gtk2_ardour/keyboard.cc
parent5d176eefa6706f11031f0b6c01179fe80cbbc6c1 (diff)
Fix up modifier behaviour
- its now possible to use snap modifiers in combination with others afaict this hasn't worked for some time. - use "contains" rather than "equals" during drag. Still uncertain about this wrt beginning a drag. for now they are all "equals". - probably solve the "snap modifier modifier" problem using ArdourKeyboard::indicates_snap () and friend.
Diffstat (limited to 'gtk2_ardour/keyboard.cc')
-rw-r--r--gtk2_ardour/keyboard.cc24
1 files changed, 22 insertions, 2 deletions
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc
index 2eac66af88..72b9ff1ba4 100644
--- a/gtk2_ardour/keyboard.cc
+++ b/gtk2_ardour/keyboard.cc
@@ -235,6 +235,28 @@ ArdourKeyboard::set_state (const XMLNode& node, int version)
return Keyboard::set_state (node, version);
}
+bool
+ArdourKeyboard::indicates_snap (guint state)
+{
+ bool contains_s = Keyboard::modifier_state_contains (state, Keyboard::snap_modifier());
+ bool equals_s = Keyboard::modifier_state_equals (state, Keyboard::snap_modifier());
+ bool contains_d = Keyboard::modifier_state_contains (state, Keyboard::snap_delta_modifier());
+ bool equals_d = Keyboard::modifier_state_equals (state, Keyboard::snap_delta_modifier());
+
+ return (equals_s || (contains_s && ((contains_d && !equals_d) || !contains_d)));
+}
+
+bool
+ArdourKeyboard::indicates_snap_delta (guint state)
+{
+ bool contains_d = Keyboard::modifier_state_contains (state, Keyboard::snap_delta_modifier());
+ bool equals_d = Keyboard::modifier_state_equals (state, Keyboard::snap_delta_modifier());
+ bool contains_s = Keyboard::modifier_state_contains (state, Keyboard::snap_modifier());
+ bool equals_s = Keyboard::modifier_state_equals (state, Keyboard::snap_modifier());
+
+ return (equals_d || (contains_d && ((contains_s && !equals_s) || !contains_s)));
+}
+
void
ArdourKeyboard::set_trim_contents_modifier (guint mod)
{
@@ -296,5 +318,3 @@ ArdourKeyboard::selection_type (guint state)
return Selection::Set;
}
}
-
-