From 5c6fd64a0e2bc6f21a992cc3c2bc03774887fe3e Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Thu, 29 Dec 2016 19:31:04 -0500 Subject: [PATCH] TrackList::GetPrev and ::GetNext are private --- src/Menus.cpp | 34 +++++++++---------- src/Project.cpp | 5 +-- src/Track.h | 10 ++---- src/TrackPanelResizeHandle.cpp | 12 +++---- .../wavetrack/ui/WaveTrackControls.cpp | 2 +- src/tracks/ui/TrackSelectHandle.cpp | 8 +++-- 6 files changed, 35 insertions(+), 36 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index d1c3698a1..1bd77d609 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -3443,11 +3443,9 @@ void MenuCommandHandler::OnMoveToLabel(AudacityProject &project, bool next) } else if (nLabelTrack > 1) { // find first label track, if any, starting at the focused track track = trackPanel->GetFocusedTrack(); - while (track && track->GetKind() != Track::Label) { - track = tracks->GetNext(track, true); - if (!track) { - trackPanel->MessageForScreenReader(_("no label track at or below focused track")); - } + track = *tracks->Find(track).Filter(); + if (!track) { + trackPanel->MessageForScreenReader(_("no label track at or below focused track")); } } @@ -3513,7 +3511,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) bool pSelected = false; if( shift ) { - p = tracks->GetPrev( t, true ); // Get previous track + p = * -- tracks->FindLeader( t ); // Get previous track if( p == NULL ) // On first track { // JKC: wxBell() is probably for accessibility, so a blind @@ -3537,7 +3535,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) { selectionState.SelectTrack ( *tracks, *t, false, false, mixerBoard ); - trackPanel->SetFocusedTrack( p ); // move focus to next track down + trackPanel->SetFocusedTrack( p ); // move focus to next track up trackPanel->EnsureVisible( p ); project.ModifyState(false); return; @@ -3546,7 +3544,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) { selectionState.SelectTrack ( *tracks, *p, true, false, mixerBoard ); - trackPanel->SetFocusedTrack( p ); // move focus to next track down + trackPanel->SetFocusedTrack( p ); // move focus to next track up trackPanel->EnsureVisible( p ); project.ModifyState(false); return; @@ -3555,7 +3553,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) { selectionState.SelectTrack ( *tracks, *p, false, false, mixerBoard ); - trackPanel->SetFocusedTrack( p ); // move focus to next track down + trackPanel->SetFocusedTrack( p ); // move focus to next track up trackPanel->EnsureVisible( p ); project.ModifyState(false); return; @@ -3564,25 +3562,25 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) { selectionState.SelectTrack ( *tracks, *t, true, false, mixerBoard ); - trackPanel->SetFocusedTrack( p ); // move focus to next track down + trackPanel->SetFocusedTrack( p ); // move focus to next track up trackPanel->EnsureVisible( p ); - project.ModifyState(false); + project.ModifyState(false); return; } } else { - p = tracks->GetPrev( t, true ); // Get next track - if( p == NULL ) // On last track so stay there? + p = * -- tracks->FindLeader( t ); // Get previous track + if( p == NULL ) // On first track so stay there? { wxBell(); if( mCircularTrackNavigation ) { auto range = tracks->Leaders(); p = * range.rbegin(); // null if range is empty - trackPanel->SetFocusedTrack( p ); // Wrap to the first track + trackPanel->SetFocusedTrack( p ); // Wrap to the last track trackPanel->EnsureVisible( p ); - project.ModifyState(false); + project.ModifyState(false); return; } else @@ -3593,7 +3591,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift ) } else { - trackPanel->SetFocusedTrack( p ); // move focus to next track down + trackPanel->SetFocusedTrack( p ); // move focus to next track up trackPanel->EnsureVisible( p ); project.ModifyState(false); return; @@ -3628,7 +3626,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift ) if( shift ) { - n = tracks->GetNext( t, true ); // Get next track + n = * ++ tracks->FindLeader( t ); // Get next track if( n == NULL ) // On last track so stay there { wxBell(); @@ -3684,7 +3682,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift ) } else { - n = tracks->GetNext( t, true ); // Get next track + n = * ++ tracks->FindLeader( t ); // Get next track if( n == NULL ) // On last track so stay there { wxBell(); diff --git a/src/Project.cpp b/src/Project.cpp index ffbf5e793..1c6a17c14 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -5784,9 +5784,10 @@ void AudacityProject::RemoveTrack(Track * toRemove) bool toRemoveWasFocused = mTrackPanel->GetFocusedTrack() == toRemove; Track* newFocus{}; if (toRemoveWasFocused) { - newFocus = mTracks->GetNext(toRemove, true); + auto iterNext = mTracks->FindLeader(toRemove), iterPrev = iterNext; + newFocus = *++iterNext; if (!newFocus) { - newFocus = mTracks->GetPrev(toRemove, true); + newFocus = *--iterPrev; } } diff --git a/src/Track.h b/src/Track.h index 04776786f..133d27f11 100644 --- a/src/Track.h +++ b/src/Track.h @@ -1526,13 +1526,6 @@ public: /** Select a track, and if it is linked to another track, select it, too. */ void Select(Track * t, bool selected = true); - Track *GetPrev(Track * t, bool linked = false) const; - - /** Return a track in the list that comes after Track t - * @param t a track in the list - * @param linked if true, skips over linked tracks, if false returns the next track even if it is a linked track - **/ - Track *GetNext(Track * t, bool linked = false) const; int GetGroupHeight(const Track * t) const; bool CanMoveUp(Track * t) const; @@ -1623,6 +1616,9 @@ private: return { { b, b, e, pred }, { b, e, e, pred } }; } + Track *GetPrev(Track * t, bool linked = false) const; + Track *GetNext(Track * t, bool linked = false) const; + std::pair FindSyncLockGroup(Track *pMember) const; template < typename TrackType > diff --git a/src/TrackPanelResizeHandle.cpp b/src/TrackPanelResizeHandle.cpp index 5fd0e00af..0135fbbf9 100644 --- a/src/TrackPanelResizeHandle.cpp +++ b/src/TrackPanelResizeHandle.cpp @@ -64,8 +64,8 @@ TrackPanelResizeHandle::TrackPanelResizeHandle , mMouseClickY( y ) { auto tracks = pProject->GetTracks(); - Track *prev = tracks->GetPrev(track.get()); - Track *next = tracks->GetNext(track.get()); + auto prev = * -- tracks->Find(track.get()); + auto next = * ++ tracks->Find(track.get()); //STM: Determine whether we should rescale one or two tracks if (prev && prev->GetLink() == track.get()) { @@ -184,13 +184,13 @@ UIHandle::Result TrackPanelResizeHandle::Drag { case IsResizingBelowLinkedTracks: { - Track *prev = tracks->GetPrev(pTrack.get()); + auto prev = * -- tracks->Find(pTrack.get()); doResizeBelow(prev, false); break; } case IsResizingBetweenLinkedTracks: { - Track *next = tracks->GetNext(pTrack.get()); + auto next = * ++ tracks->Find(pTrack.get()); doResizeBetween(next, false); break; } @@ -244,7 +244,7 @@ UIHandle::Result TrackPanelResizeHandle::Cancel(AudacityProject *pProject) break; case IsResizingBetweenLinkedTracks: { - Track *const next = tracks->GetNext(pTrack.get()); + Track *const next = * ++ tracks->Find(pTrack.get()); pTrack->SetHeight(mInitialUpperActualHeight); pTrack->SetMinimized(mInitialMinimized); next->SetHeight(mInitialActualHeight); @@ -253,7 +253,7 @@ UIHandle::Result TrackPanelResizeHandle::Cancel(AudacityProject *pProject) break; case IsResizingBelowLinkedTracks: { - Track *const prev = tracks->GetPrev(pTrack.get()); + Track *const prev = * -- tracks->Find(pTrack.get()); pTrack->SetHeight(mInitialActualHeight); pTrack->SetMinimized(mInitialMinimized); prev->SetHeight(mInitialUpperActualHeight); diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp index cbb406b37..cb719bbce 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackControls.cpp @@ -623,7 +623,7 @@ void WaveTrackMenuTable::InitMenu(Menu *pMenu, void *pUserData) WaveTrack *const pTrack = static_cast(mpData->pTrack); TrackList *const tracks = project->GetTracks(); - Track *const next = tracks->GetNext(pTrack); + auto next = * ++ tracks->Find(pTrack); if (isMono) { const bool canMakeStereo = diff --git a/src/tracks/ui/TrackSelectHandle.cpp b/src/tracks/ui/TrackSelectHandle.cpp index 80c47d113..bc0ff480c 100644 --- a/src/tracks/ui/TrackSelectHandle.cpp +++ b/src/tracks/ui/TrackSelectHandle.cpp @@ -225,13 +225,17 @@ void TrackSelectHandle::CalculateRearrangingThresholds(const wxMouseEvent & even if (tracks->CanMoveUp(mpTrack.get())) mMoveUpThreshold = - event.m_y - tracks->GetGroupHeight(tracks->GetPrev(mpTrack.get(), true)); + event.m_y - + tracks->GetGroupHeight( + * -- tracks->FindLeader( mpTrack.get() ) ); else mMoveUpThreshold = INT_MIN; if (tracks->CanMoveDown(mpTrack.get())) mMoveDownThreshold = - event.m_y + tracks->GetGroupHeight(tracks->GetNext(mpTrack.get(), true)); + event.m_y + + tracks->GetGroupHeight( + * ++ tracks->FindLeader( mpTrack.get() ) ); else mMoveDownThreshold = INT_MAX; }