ArdourKeyboard - fix snap / delta logic for triple modifier combinations.
authornick_m <mainsbridge@gmail.com>
Wed, 7 Oct 2015 14:46:52 +0000 (01:46 +1100)
committernick_m <mainsbridge@gmail.com>
Mon, 19 Oct 2015 13:53:30 +0000 (00:53 +1100)
gtk2_ardour/keyboard.cc

index ae477943dbd7299ab259b6c72c2394ab8f673b9f..1197033005996b1d5c60b1d3fbc35b1d17a036f9 100644 (file)
@@ -249,20 +249,20 @@ bool
 ArdourKeyboard::indicates_snap (guint state)
 {
        const bool contains_s = Keyboard::modifier_state_contains (state, Keyboard::snap_modifier());
+       const bool equals_s = Keyboard::modifier_state_equals (state, Keyboard::snap_modifier());
        const bool contains_d = Keyboard::modifier_state_contains (state, Keyboard::snap_delta_modifier());
-       const bool equals_d = Keyboard::modifier_state_equals (state, Keyboard::snap_delta_modifier());
 
-       return  (contains_s && ((contains_d && !equals_d) || !contains_d));
+       return  (contains_s && ((contains_d && equals_s) || !contains_d));
 }
 
 bool
 ArdourKeyboard::indicates_snap_delta (guint state)
 {
        const bool contains_d = Keyboard::modifier_state_contains (state, Keyboard::snap_delta_modifier());
+       const bool equals_d = Keyboard::modifier_state_equals (state, Keyboard::snap_delta_modifier());
        const bool contains_s = Keyboard::modifier_state_contains (state, Keyboard::snap_modifier());
-       const bool equals_s = Keyboard::modifier_state_equals (state, Keyboard::snap_modifier());
 
-       return (contains_d && ((contains_s && !equals_s) || !contains_s));
+       return (contains_d && ((contains_s && equals_d) || !contains_s));
 }
 
 void