From d9cee7a6d676be313e713ddcd9febb52eb64b0f7 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Jun 2014 14:27:59 -0400 Subject: [PATCH] fix scrolling behaviour in track headers (event was stolen by rulers because event coordinates made it look as if the event happened there) --- gtk2_ardour/editor.cc | 2 +- gtk2_ardour/editor.h | 2 +- gtk2_ardour/editor_canvas.cc | 2 +- gtk2_ardour/editor_canvas_events.cc | 10 ++++++---- gtk2_ardour/public_editor.h | 2 +- gtk2_ardour/time_axis_view.cc | 2 +- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index e9215a252c..c73eb59697 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -3973,7 +3973,7 @@ Editor::control_layout_scroll (GdkEventScroll* ev) In the not too distant future this layout is going away anyway and headers will be on the canvas. */ - return canvas_scroll_event (ev); + return canvas_scroll_event (ev, false); } void diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index cd0bdc4fe0..ec9705816c 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1412,7 +1412,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* Canvas event handlers */ - bool canvas_scroll_event (GdkEventScroll* event); + bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas); bool canvas_control_point_event (GdkEvent* event,ArdourCanvas::Item*, ControlPoint*); bool canvas_line_event (GdkEvent* event,ArdourCanvas::Item*, AutomationLine*); bool canvas_selection_rect_event (GdkEvent* event,ArdourCanvas::Item*, SelectionRect*); diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index c448fa65df..f962cb4ff7 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -236,7 +236,7 @@ Editor::initialize_canvas () handlers. */ - _track_canvas->signal_scroll_event().connect (sigc::mem_fun (*this, &Editor::canvas_scroll_event)); + _track_canvas->signal_scroll_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_scroll_event), true)); _track_canvas->signal_motion_notify_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_motion_notify_event)); _track_canvas->signal_button_press_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_button_press_event)); _track_canvas->signal_button_release_event().connect (sigc::mem_fun (*this, &Editor::track_canvas_button_release_event)); diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 0d04529848..1477e9f9da 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -160,11 +160,13 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) } bool -Editor::canvas_scroll_event (GdkEventScroll *event) +Editor::canvas_scroll_event (GdkEventScroll *event, bool from_canvas) { - boost::optional rulers = _time_markers_group->bounding_box(); - if (rulers && rulers->contains (Duple (event->x, event->y))) { - return canvas_ruler_event ((GdkEvent*) event, timecode_ruler, TimecodeRulerItem); + if (from_canvas) { + boost::optional rulers = _time_markers_group->bounding_box(); + if (rulers && rulers->contains (Duple (event->x, event->y))) { + return canvas_ruler_event ((GdkEvent*) event, timecode_ruler, TimecodeRulerItem); + } } _track_canvas->grab_focus(); diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index 1e915dcf3c..7b867d5735 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -320,7 +320,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible, publi virtual void reset_focus () = 0; - virtual bool canvas_scroll_event (GdkEventScroll* event) = 0; + virtual bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas) = 0; virtual bool canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item*, ControlPoint*) = 0; virtual bool canvas_line_event (GdkEvent* event, ArdourCanvas::Item*, AutomationLine*) = 0; virtual bool canvas_selection_rect_event (GdkEvent* event, ArdourCanvas::Item*, SelectionRect*) = 0; diff --git a/gtk2_ardour/time_axis_view.cc b/gtk2_ardour/time_axis_view.cc index 6c7dbda31c..80f9c4945c 100644 --- a/gtk2_ardour/time_axis_view.cc +++ b/gtk2_ardour/time_axis_view.cc @@ -308,7 +308,7 @@ TimeAxisView::controls_ebox_scroll (GdkEventScroll* ev) In the not too distant future this layout is going away anyway and headers will be on the canvas. */ - return _editor.canvas_scroll_event (ev); + return _editor.canvas_scroll_event (ev, false); } bool