mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-16 11:46:25 +01:00
fixes so that cursor changes inside a MidiRegionView work as intended
They already worked in the PianorollMidiView, because that hands off enter/leave events to the parent EditingContext (a Pianoroll). But MidiRegionView and Editor were not interacting in the same way, so leaving a note object would not cause the Editor to do the right thing with the cursor.
This commit is contained in:
parent
52996e7a8d
commit
8d7b4f7991
5 changed files with 26 additions and 3 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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&);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -309,7 +309,6 @@ NoteBase::event_handler (GdkEvent* ev)
|
|||
break;
|
||||
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
set_mouse_fractions (ev);
|
||||
_view.note_left (this);
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue