diff options
author | nick_m <mainsbridge@gmail.com> | 2016-08-14 01:50:51 +1000 |
---|---|---|
committer | nick_m <mainsbridge@gmail.com> | 2016-08-14 03:04:54 +1000 |
commit | 4eba9b86381b7a56d0b1c20cde2064fd16c45a04 (patch) | |
tree | 9bbfa114d5f1d5b46a664436db39d0ccb64c9551 /gtk2_ardour/keyboard.cc | |
parent | c62026b5679810d4633c1a2de841daf29dda9dc6 (diff) |
Resolve potential ambiguity between the constraint modifier and the copy modifier when beginning a drag.
Diffstat (limited to 'gtk2_ardour/keyboard.cc')
-rw-r--r-- | gtk2_ardour/keyboard.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/gtk2_ardour/keyboard.cc b/gtk2_ardour/keyboard.cc index 99ab415c7e..b3137a7b9e 100644 --- a/gtk2_ardour/keyboard.cc +++ b/gtk2_ardour/keyboard.cc @@ -300,6 +300,25 @@ ArdourKeyboard::indicates_snap_delta (guint state) return (contains_d && ((contains_s && d_contains_s) || !contains_s)); } +/* Constraint and copy modifiers are both in effect at the beginning of some drags, and may be set ambiguously */ +bool +ArdourKeyboard::indicates_copy (guint state) +{ + const bool contains_c = Keyboard::modifier_state_contains (state, Keyboard::CopyModifier); + const bool equals_cs = Keyboard::modifier_state_equals (state, constraint_modifier ()); + + return contains_c && !equals_cs; +} + +bool +ArdourKeyboard::indicates_constraint (guint state) +{ + const bool contains_cs = Keyboard::modifier_state_contains (state, constraint_modifier ()); + const bool equals_c = Keyboard::modifier_state_equals (state, Keyboard::CopyModifier); + + return contains_cs && !equals_c; +} + void ArdourKeyboard::set_constraint_modifier (guint mod) { |