Fix and simplify step_mouse_mode.
authorDavid Robillard <d@drobilla.net>
Mon, 8 Dec 2014 00:04:33 +0000 (19:04 -0500)
committerDavid Robillard <d@drobilla.net>
Mon, 8 Dec 2014 00:04:33 +0000 (19:04 -0500)
gtk2_ardour/editing_syms.h
gtk2_ardour/editor_mouse.cc

index 94d1b9c08f3686b402140c4e5e4ab38c7a1b63fd..12c922bc60846dccd69895a6328cde6d9174f19f 100644 (file)
@@ -65,13 +65,14 @@ REGIONLISTSORTTYPE(BySourceFileName)
 REGIONLISTSORTTYPE(ByStartInFile)
 REGIONLISTSORTTYPE(ByTimestamp)
 
-MOUSEMODE(MouseGain)
+/* Changing this order will break step_mouse_mode */
 MOUSEMODE(MouseObject)
 MOUSEMODE(MouseRange)
-MOUSEMODE(MouseDraw)
+MOUSEMODE(MouseCut)
+MOUSEMODE(MouseGain)
 MOUSEMODE(MouseTimeFX)
 MOUSEMODE(MouseAudition)
-MOUSEMODE(MouseCut)
+MOUSEMODE(MouseDraw)
 
 /* Changing this order will break the menu */
 ZOOMFOCUS(ZoomFocusLeft)
index 8299151533fd471f6cd3feb5eee0141065eb949d..58d9b8a874b7ce995c0c32c7f2e4600dd5bd13e8 100644 (file)
@@ -391,47 +391,12 @@ Editor::update_time_selection_display ()
 void
 Editor::step_mouse_mode (bool next)
 {
-       switch (current_mouse_mode()) {
-       case MouseObject:
-               if (next) {
-                       set_mouse_mode (MouseRange);
-               } else {
-                       set_mouse_mode (MouseTimeFX);
-               }
-               break;
-
-       case MouseRange:
-               if (next) set_mouse_mode (MouseDraw);
-               else set_mouse_mode (MouseCut);
-               break;
-
-       case MouseCut:
-               if (next) set_mouse_mode (MouseRange);
-               else set_mouse_mode (MouseDraw);
-               break;
-
-       case MouseDraw:
-               if (next) set_mouse_mode (MouseCut);
-               else set_mouse_mode (MouseRange);
-               break;
-
-       case MouseGain:
-               if (next) set_mouse_mode (MouseTimeFX);
-               else set_mouse_mode (MouseDraw);
-               break;
-
-       case MouseTimeFX:
-               if (next) {
-                       set_mouse_mode (MouseAudition);
-               } else {
-                       set_mouse_mode (MouseGain);
-               }
-               break;
-
-       case MouseAudition:
-               if (next) set_mouse_mode (MouseObject);
-               else set_mouse_mode (MouseTimeFX);
-               break;
+       const int n_mouse_modes = (int)MouseDraw + 1;
+       int       current       = (int)current_mouse_mode();
+       if (next) {
+               set_mouse_mode((MouseMode)((current + 1) % n_mouse_modes));
+       } else {
+               set_mouse_mode((MouseMode)((current + n_mouse_modes - 1) % n_mouse_modes));
        }
 }