catch lua exceptions.
[ardour.git] / gtk2_ardour / editor_summary.cc
index 1ed9af974e57c6ad898be9cb9e0592a9150336ac..ba03d91e2dce2cb9b9253c232db5fdbe84ead6e6 100644 (file)
@@ -21,7 +21,6 @@
 
 #include "canvas/debug.h"
 
-#include "ardour_ui.h"
 #include "time_axis_view.h"
 #include "streamview.h"
 #include "editor_summary.h"
@@ -34,6 +33,7 @@
 #include "editor_cursors.h"
 #include "mouse_cursors.h"
 #include "route_time_axis.h"
+#include "ui_config.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -62,7 +62,7 @@ EditorSummary::EditorSummary (Editor* e)
        add_events (Gdk::POINTER_MOTION_MASK|Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK);
        set_flags (get_flags() | Gtk::CAN_FOCUS);
 
-       ARDOUR_UI::config()->ParameterChanged.connect (sigc::mem_fun (*this, &EditorSummary::parameter_changed));
+       UIConfiguration::instance().ParameterChanged.connect (sigc::mem_fun (*this, &EditorSummary::parameter_changed));
 }
 
 EditorSummary::~EditorSummary ()
@@ -223,7 +223,7 @@ EditorSummary::render (cairo_t* cr, cairo_rectangle_t*)
        }
 
        cairo_push_group (cr);
-       
+
        /* Fill with the background image */
 
        cairo_rectangle (cr, 0, 0, get_width(), get_height());
@@ -241,7 +241,7 @@ EditorSummary::render (cairo_t* cr, cairo_rectangle_t*)
 
        int32_t width = _view_rectangle_x.second - _view_rectangle_x.first;
        int32_t height = _view_rectangle_y.second - _view_rectangle_y.first;
-       cairo_rectangle (cr, _view_rectangle_x.first, _view_rectangle_y.first, width, height); 
+       cairo_rectangle (cr, _view_rectangle_x.first, _view_rectangle_y.first, width, height);
        cairo_set_source_rgba (cr, 1, 1, 1, 0.1);
        cairo_fill_preserve (cr);
        cairo_set_line_width (cr, 1);
@@ -352,7 +352,7 @@ EditorSummary::centre_on_click (GdkEventButton* ev)
        set_editor (ex, ey);
 }
 
-bool 
+bool
 EditorSummary::on_enter_notify_event (GdkEventCrossing*)
 {
        grab_focus ();
@@ -360,7 +360,7 @@ EditorSummary::on_enter_notify_event (GdkEventCrossing*)
        return false;
 }
 
-bool 
+bool
 EditorSummary::on_leave_notify_event (GdkEventCrossing*)
 {
        /* there are no inferior/child windows, so any leave event means that
@@ -408,7 +408,7 @@ bool
 EditorSummary::on_button_press_event (GdkEventButton* ev)
 {
        _old_follow_playhead = _editor->follow_playhead ();
-       
+
        if (ev->button == 1) {
 
                pair<double, double> xr;
@@ -436,7 +436,7 @@ EditorSummary::on_button_press_event (GdkEventButton* ev)
                                get_editor (&_pending_editor_x, &_pending_editor_y);
                                _pending_editor_changed = false;
                        }
-                       
+
                } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) {
 
                        /* secondary-modifier-click: locate playhead */
@@ -474,7 +474,7 @@ EditorSummary::on_button_press_event (GdkEventButton* ev)
 bool
 EditorSummary::suspending_editor_updates () const
 {
-       return (!ARDOUR_UI::config()->get_update_editor_during_summary_drag () && (_zoom_dragging || _move_dragging));
+       return (!UIConfiguration::instance().get_update_editor_during_summary_drag () && (_zoom_dragging || _move_dragging));
 }
 
 /** Fill in x and y with the editor's current viewable area in summary coordinates */
@@ -489,7 +489,7 @@ EditorSummary::get_editor (pair<double, double>* x, pair<double, double>* y) con
                /* We are dragging, and configured not to update the editor window during drags,
                   so just return where the editor will be when the drag finishes.
                */
-                  
+
                *x = _pending_editor_x;
                *y = _pending_editor_y;
 
@@ -499,7 +499,7 @@ EditorSummary::get_editor (pair<double, double>* x, pair<double, double>* y) con
 
                x->first = (_editor->leftmost_sample () - _start) * _x_scale;
                x->second = x->first + _editor->current_page_samples() * _x_scale;
-               
+
                y->first = editor_y_to_summary (_editor->vertical_adjustment.get_value ());
                y->second = editor_y_to_summary (_editor->vertical_adjustment.get_value () + _editor->visible_canvas_height() - _editor->get_trackview_group()->canvas_origin().y);
        }
@@ -668,7 +668,7 @@ bool
 EditorSummary::on_button_release_event (GdkEventButton*)
 {
        bool const was_suspended = suspending_editor_updates ();
-       
+
        _move_dragging = false;
        _zoom_dragging = false;
        _editor->_dragging_playhead = false;
@@ -677,7 +677,7 @@ EditorSummary::on_button_release_event (GdkEventButton*)
        if (was_suspended && _pending_editor_changed) {
                set_editor (_pending_editor_x, _pending_editor_y);
        }
-               
+
        return true;
 }
 
@@ -695,7 +695,8 @@ EditorSummary::on_scroll_event (GdkEventScroll* ev)
        switch (ev->direction) {
                case GDK_SCROLL_UP:
                        if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
-                               x -= 64;
+                               _editor->scroll_left_half_page ();
+                               return true;
                        } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) {
                                _editor->temporal_zoom_step (false);
                        } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) {
@@ -709,7 +710,8 @@ EditorSummary::on_scroll_event (GdkEventScroll* ev)
                        break;
                case GDK_SCROLL_DOWN:
                        if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollHorizontalModifier)) {
-                               x += 64;
+                               _editor->scroll_right_half_page ();
+                               return true;
                        } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomHorizontalModifier)) {
                                _editor->temporal_zoom_step (true);
                        } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::ScrollZoomVerticalModifier)) {
@@ -727,7 +729,8 @@ EditorSummary::on_scroll_event (GdkEventScroll* ev)
                        } else if (Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier)) {
                                x -= 1;
                        } else {
-                               x -= 8;
+                               _editor->scroll_left_half_page ();
+                               return true;
                        }
                        break;
                case GDK_SCROLL_RIGHT:
@@ -736,7 +739,8 @@ EditorSummary::on_scroll_event (GdkEventScroll* ev)
                        } else if (Keyboard::modifier_state_contains (ev->state, Keyboard::TertiaryModifier)) {
                                x += 1;
                        } else {
-                               x += 8;
+                               _editor->scroll_right_half_page ();
+                               return true;
                        }
                        break;
                default:
@@ -767,7 +771,7 @@ EditorSummary::set_editor (double const x, double const y)
                   as it also means that we won't change these variables if an idle handler
                   is merely pending but not executing.  But c'est la vie.
                */
-               
+
                return;
        }
 
@@ -854,12 +858,12 @@ EditorSummary::set_editor_x (pair<double, double> x)
                set_dirty ();
        } else {
                _editor->reset_x_origin (x.first / _x_scale + _start);
-               
+
                double const nx = (
                        ((x.second - x.first) / _x_scale) /
                        _editor->sample_to_pixel (_editor->current_page_samples())
                        );
-               
+
                if (nx != _editor->get_current_zoom ()) {
                        _editor->reset_zoom (nx);
                }
@@ -972,7 +976,7 @@ EditorSummary::set_editor_y (pair<double, double> const y)
                }
 
                if (yc.first <= 0 && yc.second >= _track_height) {
-                       (*i)->set_height (max (TimeAxisView::preset_height (HeightSmall), (uint32_t) ((*i)->effective_height() * scale)));
+                       (*i)->set_height (max (TimeAxisView::preset_height (HeightSmall), (uint32_t) ((*i)->effective_height() * scale)), TimeAxisView::TotalHeight);
                }
 
                yc.first -= _track_height;