fix scrolling behaviour in track headers (event was stolen by rulers because event coordinates made it look as if the event happened there)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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*);
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user