diff --git a/app/node/output/track/tracklist.cpp b/app/node/output/track/tracklist.cpp index 835e031c5..e18332040 100644 --- a/app/node/output/track/tracklist.cpp +++ b/app/node/output/track/tracklist.cpp @@ -188,7 +188,8 @@ void TrackList::TrackConnected(NodeEdgePtr edge) track_cache_.append(connected_track); } - connected_track->SetIndex(track_index); + // Update track indexes in the list (including this track) + UpdateTrackIndexesFrom(track_index); } connect(connected_track, &TrackOutput::BlockAdded, this, &TrackList::TrackAddedBlock); @@ -224,9 +225,7 @@ void TrackList::TrackDisconnected(NodeEdgePtr edge) track_cache_.removeAt(index_of_track); // Update indices for all subsequent tracks - for (int i=index_of_track; iSetIndex(i); - } + UpdateTrackIndexesFrom(index_of_track); // Traverse through Tracks uncaching and disconnecting them emit TrackRemoved(track); @@ -245,6 +244,13 @@ void TrackList::TrackDisconnected(NodeEdgePtr edge) } } +void TrackList::UpdateTrackIndexesFrom(int index) +{ + for (int i=index; iSetIndex(i); + } +} + NodeGraph *TrackList::GetParentGraph() const { return static_cast(parent()->parent()); diff --git a/app/node/output/track/tracklist.h b/app/node/output/track/tracklist.h index 78a7aa035..2589247e5 100644 --- a/app/node/output/track/tracklist.h +++ b/app/node/output/track/tracklist.h @@ -68,6 +68,8 @@ signals: void TrackHeightChanged(int index, int height); private: + void UpdateTrackIndexesFrom(int index); + /** * @brief A cache of connected Tracks */