Refactor scrolling in Editor ruler canvas area into two utility methods
authorTim Mayberry <mojofunk@gmail.com>
Thu, 7 Jan 2016 01:26:22 +0000 (11:26 +1000)
committerTim Mayberry <mojofunk@gmail.com>
Thu, 21 Jan 2016 01:25:56 +0000 (11:25 +1000)
gtk2_ardour/editor.h
gtk2_ardour/editor_canvas_events.cc
gtk2_ardour/editor_ops.cc

index b9a393f857080098404dbd672865658bef349a8f..25945edb0a5975df825b50c2f953746a27e12cc2 100644 (file)
@@ -377,6 +377,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD
        void scroll_left_step ();
        void scroll_right_step ();
 
+       void scroll_left_half_page ();
+       void scroll_right_half_page ();
+
        void prepare_for_cleanup ();
        void finish_cleanup ();
 
index c439bdaaa39cfad450d4623b70f031d16e7d207e..99abccdc46be00161ad40efe6b171a30c4ed6cc8 100644 (file)
@@ -1018,7 +1018,6 @@ Editor::canvas_meter_marker_event (GdkEvent *event, ArdourCanvas::Item* item, Me
 bool
 Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType type)
 {
-       framepos_t xdelta;
        bool handled = false;
 
        if (event->type == GDK_SCROLL) {
@@ -1056,22 +1055,12 @@ Editor::canvas_ruler_event (GdkEvent *event, ArdourCanvas::Item* item, ItemType
                        break;
 
                case GDK_SCROLL_LEFT:
-                       xdelta = (current_page_samples() / 2);
-                       if (leftmost_frame > xdelta) {
-                               reset_x_origin (leftmost_frame - xdelta);
-                       } else {
-                               reset_x_origin (0);
-                       }
+                       scroll_left_half_page ();
                        handled = true;
                        break;
 
                case GDK_SCROLL_RIGHT:
-                       xdelta = (current_page_samples() / 2);
-                       if (max_framepos - xdelta > leftmost_frame) {
-                               reset_x_origin (leftmost_frame + xdelta);
-                       } else {
-                               reset_x_origin (max_framepos - current_page_samples());
-                       }
+                       scroll_right_half_page ();
                        handled = true;
                        break;
 
index 33e5e80efa90a0b48bd334079e9a809cce86a6cf..d0b24be866d21badcc501565fe5fd7f3a964517c 100644 (file)
@@ -1614,6 +1614,28 @@ Editor::scroll_right_step ()
        }
 }
 
+void
+Editor::scroll_left_half_page ()
+{
+       framepos_t xdelta = (current_page_samples() / 2);
+       if (leftmost_frame > xdelta) {
+               reset_x_origin (leftmost_frame - xdelta);
+       } else {
+               reset_x_origin (0);
+       }
+}
+
+void
+Editor::scroll_right_half_page ()
+{
+       framepos_t xdelta = (current_page_samples() / 2);
+       if (max_framepos - xdelta > leftmost_frame) {
+               reset_x_origin (leftmost_frame + xdelta);
+       } else {
+               reset_x_origin (max_framepos - current_page_samples());
+       }
+}
+
 /* ZOOM */
 
 void