diff --git a/gtk2_ardour/editing_context.h b/gtk2_ardour/editing_context.h index d3a7aef102..41c8d5ea14 100644 --- a/gtk2_ardour/editing_context.h +++ b/gtk2_ardour/editing_context.h @@ -275,7 +275,7 @@ class EditingContext : public ARDOUR::SessionHandlePtr, public AxisViewProvider, virtual bool canvas_control_point_event (GdkEvent* event, ArdourCanvas::Item*, ControlPoint*) = 0; virtual bool canvas_cue_start_event (GdkEvent* event, ArdourCanvas::Item*) { return true; } virtual bool canvas_cue_end_event (GdkEvent* event, ArdourCanvas::Item*) { return true; } - virtual bool canvas_bg_event (GdkEvent* event, ArdourCanvas::Item*) { return true; } + virtual bool canvas_bg_event (GdkEvent* event, ArdourCanvas::Item*) = 0; Temporal::Beats get_grid_type_as_beats (bool& success, Temporal::timepos_t const & position) const; Temporal::Beats get_draw_length_as_beats (bool& success, Temporal::timepos_t const & position) const; diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 36144bbf47..fd3f66108c 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -1536,6 +1536,7 @@ private: bool canvas_bbt_marker_event (GdkEvent* event,ArdourCanvas::Item*, BBTMarker*); bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*); bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_bg_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_ruler_event (GdkEvent* event, ArdourCanvas::Item*, ItemType); bool canvas_ruler_bar_event (GdkEvent* event, ArdourCanvas::Item*, ItemType, std::string const&); diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index b6dffbf555..addefc4a05 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -1200,6 +1200,16 @@ Editor::canvas_note_event (GdkEvent *event, ArdourCanvas::Item* item) return typed_event (item, event, NoteItem); } +bool +Editor::canvas_bg_event (GdkEvent *event, ArdourCanvas::Item* item) +{ + if (!internal_editing()) { + return false; + } + + return typed_event (item, event, RegionItem); +} + bool Editor::canvas_drop_zone_event (GdkEvent* event) { diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index e0538bf9a8..6eaffdb4d6 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -308,7 +308,20 @@ MidiRegionView::canvas_group_event(GdkEvent* ev) return RegionView::canvas_group_event (ev); } - return MidiView::midi_canvas_group_event (ev); + /* Let MidiView do its thing */ + + if (MidiView::midi_canvas_group_event (ev)) { + + switch (ev->type) { + case GDK_ENTER_NOTIFY: + case GDK_LEAVE_NOTIFY: + break; + default: + return true; + } + } + + return _editing_context.canvas_bg_event (ev, get_canvas_group()); } bool diff --git a/gtk2_ardour/note_base.cc b/gtk2_ardour/note_base.cc index 4a5d7e6f04..77819aae6f 100644 --- a/gtk2_ardour/note_base.cc +++ b/gtk2_ardour/note_base.cc @@ -309,7 +309,6 @@ NoteBase::event_handler (GdkEvent* ev) break; case GDK_LEAVE_NOTIFY: - set_mouse_fractions (ev); _view.note_left (this); break;