diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 8415b6b032..4fc9a11a92 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -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 (&tav)); + if (!_session) { + return; + } + + track_drag = new TrackDrag (dynamic_cast (&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 diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 7699d875ed..6aa3f8e575 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -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) {} };