13
0

avoid track I/O reconnection during drags

This commit is contained in:
Paul Davis 2024-05-05 21:53:42 -06:00
parent 83bd2ee752
commit 7b1388f263
2 changed files with 14 additions and 2 deletions

View File

@ -7165,7 +7165,11 @@ Editor::default_time_domain () const
void
Editor::start_track_drag (TimeAxisView& tav, int y, Gtk::Widget& w)
{
track_drag = new TrackDrag (dynamic_cast<RouteTimeAxisView*> (&tav));
if (!_session) {
return;
}
track_drag = new TrackDrag (dynamic_cast<RouteTimeAxisView*> (&tav), *_session);
track_drag->drag_cursor = _cursors->move->gobj();
track_drag->predrag_cursor = gdk_window_get_cursor (edit_controls_vbox.get_window()->gobj());
@ -7225,6 +7229,12 @@ Editor::end_track_drag ()
delete track_drag;
track_drag = nullptr;
/* the suspender was deleted with track_drag, now catch up on any track
numbering and side effects
*/
_session->update_track_numbers ();
}
bool

View File

@ -2611,8 +2611,9 @@ private:
bool have_predrag_cursor;
int direction;
bool first_move;
ARDOUR::Session::LivetraxAutoConnectSuspender suspender;
TrackDrag (RouteTimeAxisView* rtav)
TrackDrag (RouteTimeAxisView* rtav, ARDOUR::Session& s)
: track (rtav)
, drag_cursor (nullptr)
, predrag_cursor (nullptr)
@ -2623,6 +2624,7 @@ private:
, have_predrag_cursor (false)
, direction (0)
, first_move (true)
, suspender (s)
{}
};