diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 1ac165808..c6468a665 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -3166,6 +3166,14 @@ void TrackInfo::UpdatePrefs() } while (textWidth >= allowableWidth); } +IteratorRange< TrackPanelCellIterator > TrackPanel::Cells() +{ + return { + TrackPanelCellIterator( this, true ), + TrackPanelCellIterator( this, false ) + }; +} + TrackPanelCellIterator::TrackPanelCellIterator(TrackPanel *trackPanel, bool begin) : mPanel(trackPanel) , mIter(trackPanel->GetProject()) diff --git a/src/TrackPanel.h b/src/TrackPanel.h index b454c79a3..4c0429d66 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -44,6 +44,7 @@ class MixerBoard; class AudacityProject; class TrackPanelAx; +class TrackPanelCellIterator; struct TrackPanelMouseEvent; class ViewInfo; @@ -259,6 +260,8 @@ class AUDACITY_DLL_API TrackPanel final : public OverlayPanel { virtual ~ TrackPanel(); + IteratorRange< TrackPanelCellIterator > Cells(); + void UpdatePrefs(); void ApplyUpdatedTheme(); diff --git a/src/tracks/ui/EditCursorOverlay.cpp b/src/tracks/ui/EditCursorOverlay.cpp index 5e23c4c15..4f6207384 100644 --- a/src/tracks/ui/EditCursorOverlay.cpp +++ b/src/tracks/ui/EditCursorOverlay.cpp @@ -102,13 +102,10 @@ void EditCursorOverlay::Draw(OverlayPanel &panel, wxDC &dc) if (auto tp = dynamic_cast(&panel)) { wxASSERT(mIsMaster); AColor::CursorColor(&dc); - TrackPanelCellIterator begin(tp, true); - TrackPanelCellIterator end(tp, false); // Draw cursor in all selected tracks - for (; begin != end; ++begin) + for ( const auto &data : tp->Cells() ) { - TrackPanelCellIterator::value_type data(*begin); Track *const pTrack = dynamic_cast(data.first); if (!pTrack) continue; diff --git a/src/tracks/ui/PlayIndicatorOverlay.cpp b/src/tracks/ui/PlayIndicatorOverlay.cpp index 2a5e35d06..91b8977cb 100644 --- a/src/tracks/ui/PlayIndicatorOverlay.cpp +++ b/src/tracks/ui/PlayIndicatorOverlay.cpp @@ -69,13 +69,9 @@ void PlayIndicatorOverlayBase::Draw(OverlayPanel &panel, wxDC &dc) if(auto tp = dynamic_cast(&panel)) { wxASSERT(mIsMaster); - TrackPanelCellIterator begin(tp, true); - TrackPanelCellIterator end(tp, false); - // Draw indicator in all visible tracks - for (; begin != end; ++begin) + for ( const auto &data : tp->Cells() ) { - TrackPanelCellIterator::value_type data(*begin); Track *const pTrack = dynamic_cast(data.first); if (!pTrack) continue; diff --git a/src/tracks/ui/Scrubbing.cpp b/src/tracks/ui/Scrubbing.cpp index b86fefcd3..a40a86beb 100644 --- a/src/tracks/ui/Scrubbing.cpp +++ b/src/tracks/ui/Scrubbing.cpp @@ -17,7 +17,6 @@ Paul Licameli split from TrackPanel.cpp #include "../../Project.h" #include "../../TrackPanel.h" #include "../../TrackPanelCell.h" -#include "../../TrackPanelCellIterator.h" #include "../../commands/CommandFunctors.h" #include "../../prefs/TracksPrefs.h" #include "../../toolbars/ControlToolBar.h" diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 6ebdf4db9..a9ba2fc36 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -1826,10 +1826,6 @@ std::pair QuickPlayIndicatorOverlay::DoGetRectangle(wxSize size) void QuickPlayIndicatorOverlay::Draw(OverlayPanel &panel, wxDC &dc) { - TrackPanel &tp = static_cast(panel); - TrackPanelCellIterator begin(&tp, true); - TrackPanelCellIterator end(&tp, false); - mOldQPIndicatorPos = mNewQPIndicatorPos; mOldQPIndicatorSnapped = mNewQPIndicatorSnapped; mOldPreviewingScrub = mNewPreviewingScrub; @@ -1843,9 +1839,8 @@ void QuickPlayIndicatorOverlay::Draw(OverlayPanel &panel, wxDC &dc) ; // Draw indicator in all visible tracks - for (; begin != end; ++begin) + for ( const auto &data : static_cast(panel).Cells() ) { - TrackPanelCellIterator::value_type data(*begin); Track *const pTrack = dynamic_cast(data.first); if (!pTrack) continue;