tracklist: ensure track indexes are updated when tracks are added/removed

This commit is contained in:
itsmattkc
2020-10-15 10:38:36 +11:00
parent e5b18fa45b
commit 384650e85a
2 changed files with 12 additions and 4 deletions
+10 -4
View File
@@ -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; i<track_cache_.size(); i++) {
track_cache_.at(i)->SetIndex(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; i<track_cache_.size(); i++) {
track_cache_.at(i)->SetIndex(i);
}
}
NodeGraph *TrackList::GetParentGraph() const
{
return static_cast<NodeGraph*>(parent()->parent());
+2
View File
@@ -68,6 +68,8 @@ signals:
void TrackHeightChanged(int index, int height);
private:
void UpdateTrackIndexesFrom(int index);
/**
* @brief A cache of connected Tracks
*/