From 28eeca5fa7555abbebef1b660cf8f5fa3d5c1984 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Wed, 10 Jan 2018 16:02:51 -0500 Subject: [PATCH] Iterate over the pending tracks for drawing and sizing the scrollbars --- src/Project.cpp | 16 ++++++++++++++-- src/TrackArtist.cpp | 6 ++++++ src/TrackPanel.cpp | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Project.cpp b/src/Project.cpp index 23f05585f..db0eaa14e 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -1896,8 +1896,20 @@ void AudacityProject::FixScrollbars() panelHeight = 0; } - double LastTime = - std::max(mTracks->GetEndTime(), mViewInfo.selectedRegion.t1()); + auto LastTime = -std::numeric_limits::max(); + auto &tracks = *GetTracks(); + for (auto track : tracks) { + // Iterate over pending changed tracks if present. + { + auto other = + tracks.FindPendingChangedTrack(track->GetId()); + if (other) + track = other.get(); + } + LastTime = std::max( LastTime, track->GetEndTime() ); + } + LastTime = + std::max(LastTime, mViewInfo.selectedRegion.t1()); const double screen = GetScreenEndTime() - mViewInfo.h; const double halfScreen = screen / 2.0; diff --git a/src/TrackArtist.cpp b/src/TrackArtist.cpp index 79aac850d..f1bd513af 100644 --- a/src/TrackArtist.cpp +++ b/src/TrackArtist.cpp @@ -357,6 +357,9 @@ void TrackArtist::DrawTracks(TrackPanelDrawingContext &context, bool hasSolo = false; for (t = iter.First(); t; t = iter.Next()) { + auto other = tracks->FindPendingChangedTrack(t->GetId()); + if (other) + t = other.get(); auto pt = dynamic_cast(t); if (pt && pt->GetSolo()) { hasSolo = true; @@ -381,6 +384,9 @@ void TrackArtist::DrawTracks(TrackPanelDrawingContext &context, t = iter.StartWith(start); while (t) { + auto other = tracks->FindPendingChangedTrack(t->GetId()); + if (other) + t = other.get(); trackRect.y = t->GetY() - zoomInfo.vpos; trackRect.height = t->GetHeight(); diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 4447394cb..f93a6f79c 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -1871,6 +1871,9 @@ void TrackPanel::DrawEverythingElse(TrackPanelDrawingContext &context, VisibleTrackIterator iter(GetProject()); for (Track *t = iter.First(); t; t = iter.Next()) { + auto other = GetTracks()->FindPendingChangedTrack(t->GetId()); + if (other) + t = other.get(); trackRect.y = t->GetY() - mViewInfo->vpos; trackRect.height = t->GetHeight();