summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-06-13 14:27:59 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-06-13 14:27:59 -0400
commit7a0b2e1c18cdc0447581f6a8024377c1b4b1c52a (patch)
treef56570432d6e8f3b7bba7dcf3a9ec9040171d307
parent7d678604fad1ac009c48fd6c91a1041a588b8b50 (diff)
fix scrolling behaviour in track headers (event was stolen by rulers because event coordinates made it look as if the event happened there)
-rw-r--r--gtk2_ardour/editor.cc2
-rw-r--r--gtk2_ardour/editor.h2
-rw-r--r--gtk2_ardour/editor_canvas.cc2
-rw-r--r--gtk2_ardour/editor_canvas_events.cc10
-rw-r--r--gtk2_ardour/public_editor.h2
-rw-r--r--gtk2_ardour/time_axis_view.cc2
6 files changed, 11 insertions, 9 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index dd0b7309e7..f3195daec2 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -3870,7 +3870,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 9191a23503..a7a7224e61 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -1383,7 +1383,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 a9114df5dd..be2b5c3de7 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<Rect> 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<Rect> 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 d37b4d7744..af66415a65 100644
--- a/gtk2_ardour/public_editor.h
+++ b/gtk2_ardour/public_editor.h
@@ -318,7 +318,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 a05b144e56..31b25164ac 100644
--- a/gtk2_ardour/time_axis_view.cc
+++ b/gtk2_ardour/time_axis_view.cc
@@ -324,7 +324,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