diff options
author | nick_m <mainsbridge@gmail.com> | 2015-05-22 02:12:58 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2015-05-22 02:12:58 +1000 |
commit | eaf49f02ff92f22cbfa214ae89ec0a2fc3861d29 (patch) | |
tree | 6d35ff13c38aef1e91fbcb0ff10ee84f94d1ebc1 /gtk2_ardour/keyboard.cc | |
parent | 5d176eefa6706f11031f0b6c01179fe80cbbc6c1 (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.cc | 24 |
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; } } - - |