From d39d4c1c118960fe482caab9a2c10ca06d1aafa6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 13 Jan 2015 23:30:37 -0500 Subject: Fix automation range drag and implement for MIDI. Range select rect sticks around now after switching to the draw tool, but disappears if a note selection is made. Not sure if draw is really the most appropriate tool here (particularly if we ever implement actual pencil-like drawing); edit contents seems more appropriate but that would probably cause more selection issues, so here we are. --- gtk2_ardour/editor_mouse.cc | 54 ++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 27 deletions(-) (limited to 'gtk2_ardour/editor_mouse.cc') diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index d0df73e3e8..8ec03d778d 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -336,29 +336,28 @@ void Editor::update_time_selection_display () { switch (mouse_mode) { - case MouseRange: - selection->clear_objects (); - selection->ClearMidiNoteSelection(); //signal - break; - case MouseObject: - selection->clear_objects (); - selection->clear_time (); - selection->clear_tracks (); - selection->ClearMidiNoteSelection(); //signal - break; - case MouseContent: - case MouseDraw: - //if we go into internal editing, clear everything in the outside world - selection->clear_objects (); - selection->clear_time (); - selection->clear_tracks (); - break; - default: - //clear everything - selection->clear_objects (); - selection->clear_time (); - selection->clear_tracks (); - break; + case MouseRange: + selection->clear_objects (); + selection->ClearMidiNoteSelection (); /* EMIT SIGNAL */ + break; + case MouseObject: + selection->clear_objects (); + selection->clear_time (); + selection->clear_tracks (); + selection->ClearMidiNoteSelection (); /* EMIT SIGNAL */ + break; + case MouseDraw: + /* Clear top level objects, but not time or tracks, since that + woulddestroy the range selection rectangle, which we need to stick + around for AutomationRangeDrag. */ + selection->clear_objects (); + break; + default: + /* Clear everything. */ + selection->clear_objects (); + selection->clear_time (); + selection->clear_tracks (); + break; } } @@ -920,12 +919,13 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT case SelectionItem: { - AudioRegionView* arv = dynamic_cast (clicked_regionview); - if (arv) { - _drags->set (new AutomationRangeDrag (this, arv, selection->time), event, _cursors->up_down); + if (dynamic_cast(clicked_regionview) || + dynamic_cast(clicked_regionview)) { + _drags->set (new AutomationRangeDrag (this, clicked_regionview, selection->time), + event, _cursors->up_down); } else { double const y = event->button.y; - pair tvp = trackview_by_y_position (y); + pair tvp = trackview_by_y_position (y, false); if (tvp.first) { AutomationTimeAxisView* atv = dynamic_cast (tvp.first); if ( atv) { -- cgit v1.2.3