From 005abb06d6fbc77d2f1c0e088cff78c3bd2fba79 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Thu, 1 Nov 2018 12:55:06 -0400 Subject: [PATCH] Replace uses of TrackPanel::Cells() with CellularPanel::VisitCells() --- src/AdornedRulerPanel.cpp | 26 ++++++++++++-------------- src/TrackPanelResizeHandle.h | 1 - src/TrackPanelResizerCell.h | 1 - src/tracks/ui/EditCursorOverlay.cpp | 12 ++++-------- src/tracks/ui/PlayIndicatorOverlay.cpp | 10 +++------- 5 files changed, 19 insertions(+), 31 deletions(-) diff --git a/src/AdornedRulerPanel.cpp b/src/AdornedRulerPanel.cpp index f540ca304..b8a71ae71 100644 --- a/src/AdornedRulerPanel.cpp +++ b/src/AdornedRulerPanel.cpp @@ -33,7 +33,6 @@ #include "RefreshCode.h" #include "Snap.h" #include "TrackPanel.h" -#include "TrackPanelCellIterator.h" #include "TrackPanelMouseEvent.h" #include "UIHandle.h" #include "prefs/TracksBehaviorsPrefs.h" @@ -328,20 +327,19 @@ void AdornedRulerPanel::QuickPlayIndicatorOverlay::Draw( ; // Draw indicator in all visible tracks - for ( const auto &data : static_cast(panel).Cells() ) - { - Track *const pTrack = dynamic_cast(data.first.get()); - if (!pTrack) - continue; - const wxRect &rect = data.second; + static_cast(panel) + .VisitCells( [&]( const wxRect &rect, TrackPanelCell &cell ) { + const auto pTrack = dynamic_cast(&cell); + if (!pTrack) + return; - // Draw the NEW indicator in its NEW location - AColor::Line(dc, - mOldQPIndicatorPos, - rect.GetTop(), - mOldQPIndicatorPos, - rect.GetBottom()); - } + // Draw the NEW indicator in its NEW location + AColor::Line(dc, + mOldQPIndicatorPos, + rect.GetTop(), + mOldQPIndicatorPos, + rect.GetBottom()); + } ); } } diff --git a/src/TrackPanelResizeHandle.h b/src/TrackPanelResizeHandle.h index 47ffc8022..18df6319b 100644 --- a/src/TrackPanelResizeHandle.h +++ b/src/TrackPanelResizeHandle.h @@ -15,7 +15,6 @@ Paul Licameli split from TrackPanel.cpp #include "UIHandle.h" class Track; -class TrackPanelCellIterator; class TrackPanelResizeHandle final : public UIHandle { diff --git a/src/TrackPanelResizerCell.h b/src/TrackPanelResizerCell.h index d32573dc7..3c2a191aa 100644 --- a/src/TrackPanelResizerCell.h +++ b/src/TrackPanelResizerCell.h @@ -29,7 +29,6 @@ public: std::shared_ptr FindTrack() override { return mpTrack.lock(); }; private: - friend class TrackPanelCellIterator; std::weak_ptr mpTrack; std::weak_ptr mResizeHandle; diff --git a/src/tracks/ui/EditCursorOverlay.cpp b/src/tracks/ui/EditCursorOverlay.cpp index bd906b3de..577de1d38 100644 --- a/src/tracks/ui/EditCursorOverlay.cpp +++ b/src/tracks/ui/EditCursorOverlay.cpp @@ -15,8 +15,6 @@ Paul Licameli split from TrackPanel.cpp #include "../../AColor.h" #include "../../AdornedRulerPanel.h" #include "../../Project.h" -#include "../../TrackPanelCell.h" -#include "../../TrackPanelCellIterator.h" #include "../../TrackPanelAx.h" #include "../../ViewInfo.h" @@ -100,21 +98,19 @@ void EditCursorOverlay::Draw(OverlayPanel &panel, wxDC &dc) AColor::CursorColor(&dc); // Draw cursor in all selected tracks - for ( const auto &data : tp->Cells() ) - { - Track *const pTrack = dynamic_cast(data.first.get()); + tp->VisitCells( [&]( const wxRect &rect, TrackPanelCell &cell ) { + const auto pTrack = dynamic_cast(&cell); if (!pTrack) - continue; + return; if (pTrack->GetSelected() || mProject->GetTrackPanel()->GetAx().IsFocused(pTrack)) { - const wxRect &rect = data.second; // AColor::Line includes both endpoints so use GetBottom() AColor::Line(dc, mLastCursorX, rect.GetTop(), mLastCursorX, rect.GetBottom()); // ^^^ The whole point of this routine. } - } + } ); } else if (auto ruler = dynamic_cast(&panel)) { wxASSERT(!mIsMaster); diff --git a/src/tracks/ui/PlayIndicatorOverlay.cpp b/src/tracks/ui/PlayIndicatorOverlay.cpp index 5cc0aee8b..562f10afe 100644 --- a/src/tracks/ui/PlayIndicatorOverlay.cpp +++ b/src/tracks/ui/PlayIndicatorOverlay.cpp @@ -16,8 +16,6 @@ Paul Licameli split from TrackPanel.cpp #include "../../AudioIO.h" #include "../../Project.h" #include "../../TrackPanel.h" -#include "../../TrackPanelCell.h" -#include "../../TrackPanelCellIterator.h" #include "Scrubbing.h" #include @@ -82,9 +80,8 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc) wxASSERT(mIsMaster); // Draw indicator in all visible tracks - for ( const auto &data : tp->Cells() ) - { - Track *const pTrack = dynamic_cast(data.first.get()); + tp->VisitCells( [&]( const wxRect &rect, TrackPanelCell &cell ) { + const auto pTrack = dynamic_cast(&cell); if (pTrack) pTrack->TypeSwitch( [](LabelTrack *) { // Don't draw the indicator in label tracks @@ -92,7 +89,6 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc) [&](Track *) { // Draw the NEW indicator in its NEW location // AColor::Line includes both endpoints so use GetBottom() - const wxRect &rect = data.second; AColor::Line(dc, mLastIndicatorX, rect.GetTop(), @@ -100,7 +96,7 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc) rect.GetBottom()); } ); - } + } ); } else if(auto ruler = dynamic_cast(&panel)) { wxASSERT(!mIsMaster);