1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-09-24 16:01:16 +02:00

Remove TrackList::Select

This commit is contained in:
Paul Licameli 2017-01-07 11:20:12 -05:00
parent 5c6fd64a0e
commit 05ddfaf82b
7 changed files with 24 additions and 46 deletions

View File

@ -3534,7 +3534,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift )
if( tSelected && pSelected )
{
selectionState.SelectTrack
( *tracks, *t, false, false, mixerBoard );
( *t, false, false, mixerBoard );
trackPanel->SetFocusedTrack( p ); // move focus to next track up
trackPanel->EnsureVisible( p );
project.ModifyState(false);
@ -3543,7 +3543,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift )
if( tSelected && !pSelected )
{
selectionState.SelectTrack
( *tracks, *p, true, false, mixerBoard );
( *p, true, false, mixerBoard );
trackPanel->SetFocusedTrack( p ); // move focus to next track up
trackPanel->EnsureVisible( p );
project.ModifyState(false);
@ -3552,7 +3552,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift )
if( !tSelected && pSelected )
{
selectionState.SelectTrack
( *tracks, *p, false, false, mixerBoard );
( *p, false, false, mixerBoard );
trackPanel->SetFocusedTrack( p ); // move focus to next track up
trackPanel->EnsureVisible( p );
project.ModifyState(false);
@ -3561,7 +3561,7 @@ void MenuCommandHandler::OnPrevTrack( AudacityProject &project, bool shift )
if( !tSelected && !pSelected )
{
selectionState.SelectTrack
( *tracks, *t, true, false, mixerBoard );
( *t, true, false, mixerBoard );
trackPanel->SetFocusedTrack( p ); // move focus to next track up
trackPanel->EnsureVisible( p );
project.ModifyState(false);
@ -3646,7 +3646,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift )
if( tSelected && nSelected )
{
selectionState.SelectTrack
( *tracks, *t, false, false, mixerBoard );
( *t, false, false, mixerBoard );
trackPanel->SetFocusedTrack( n ); // move focus to next track down
trackPanel->EnsureVisible( n );
project.ModifyState(false);
@ -3655,7 +3655,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift )
if( tSelected && !nSelected )
{
selectionState.SelectTrack
( *tracks, *n, true, false, mixerBoard );
( *n, true, false, mixerBoard );
trackPanel->SetFocusedTrack( n ); // move focus to next track down
trackPanel->EnsureVisible( n );
project.ModifyState(false);
@ -3664,7 +3664,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift )
if( !tSelected && nSelected )
{
selectionState.SelectTrack
( *tracks, *n, false, false, mixerBoard );
( *n, false, false, mixerBoard );
trackPanel->SetFocusedTrack( n ); // move focus to next track down
trackPanel->EnsureVisible( n );
project.ModifyState(false);
@ -3673,7 +3673,7 @@ void MenuCommandHandler::OnNextTrack( AudacityProject &project, bool shift )
if( !tSelected && !nSelected )
{
selectionState.SelectTrack
( *tracks, *t, true, false, mixerBoard );
( *t, true, false, mixerBoard );
trackPanel->SetFocusedTrack( n ); // move focus to next track down
trackPanel->EnsureVisible( n );
project.ModifyState(false);
@ -3780,7 +3780,6 @@ void MenuCommandHandler::OnToggle(const CommandContext &context)
{
auto &project = context.project;
auto trackPanel = project.GetTrackPanel();
auto tracks = project.GetTracks();
auto &selectionState = project.GetSelectionState();
auto mixerBoard = project.GetMixerBoard();
@ -3791,7 +3790,7 @@ void MenuCommandHandler::OnToggle(const CommandContext &context)
return;
selectionState.SelectTrack
( *tracks, *t, !t->GetSelected(), true, mixerBoard );
( *t, !t->GetSelected(), true, mixerBoard );
trackPanel->EnsureVisible( t );
project.ModifyState(false);

View File

@ -54,12 +54,14 @@ void SelectionState::SelectTrackLength
}
void SelectionState::SelectTrack
( TrackList &tracks, Track &track, bool selected, bool updateLastPicked,
( Track &track, bool selected, bool updateLastPicked,
MixerBoard *pMixerBoard )
{
bool wasCorrect = (selected == track.GetSelected());
tracks.Select( &track, selected );
for (auto channel : TrackList::Channels(&track))
channel->SetSelected(selected);
if (updateLastPicked)
mLastPickedTrack = Track::Pointer( &track );
@ -98,7 +100,7 @@ void SelectionState::SelectRangeOfTracks
TrackListIterator iter( &tracks );
sTrack = iter.StartWith( sTrack );
do {
SelectTrack( tracks, *sTrack, true, false, pMixerBoard );
SelectTrack( *sTrack, true, false, pMixerBoard );
if ( sTrack == eTrack ) {
break;
}
@ -112,7 +114,7 @@ void SelectionState::SelectNone( TrackList &tracks, MixerBoard *pMixerBoard )
TrackListIterator iter( &tracks );
Track *track = iter.First();
while ( track ) {
SelectTrack( tracks, *track, false, false, pMixerBoard );
SelectTrack( *track, false, false, pMixerBoard );
track = iter.Next();
}
}
@ -155,7 +157,7 @@ void SelectionState::ChangeSelectionOnShiftClick
if( pExtendFrom )
SelectRangeOfTracks( tracks, track, *pExtendFrom, pMixerBoard );
else
SelectTrack( tracks, track, true, true, pMixerBoard );
SelectTrack( track, true, true, pMixerBoard );
mLastPickedTrack = pExtendFrom;
}
@ -166,13 +168,13 @@ void SelectionState::HandleListSelection
// AS: If the shift button is being held down, invert
// the selection on this track.
if (ctrl)
SelectTrack( tracks, track, !track.GetSelected(), true, pMixerBoard );
SelectTrack( track, !track.GetSelected(), true, pMixerBoard );
else {
if (shift && mLastPickedTrack.lock())
ChangeSelectionOnShiftClick( tracks, track, pMixerBoard );
else {
SelectNone( tracks, pMixerBoard );
SelectTrack( tracks, track, true, true, pMixerBoard );
SelectTrack( track, true, true, pMixerBoard );
SelectTrackLength( tracks, viewInfo, track, syncLocked );
}

View File

@ -24,7 +24,7 @@ public:
( TrackList &tracks, ViewInfo &viewInfo, Track &track, bool syncLocked );
void SelectTrack
( TrackList &tracks, Track &track,
( Track &track,
bool selected, bool updateLastPicked, MixerBoard *pMixerBoard );
// Inclusive range of tracks, the limits specified in either order:
void SelectRangeOfTracks

View File

@ -1078,26 +1078,6 @@ void TrackList::Clear(bool sendEvent)
DeletionEvent();
}
void TrackList::Select(Track * t, bool selected /* = true */ )
{
if (t) {
const auto node = t->GetNode();
if ( !isNull( node ) ) {
t->SetSelected( selected );
if ( t->GetLinked() ) {
auto next = getNext( node );
if ( !isNull( next ) )
(*next.first)->SetSelected( selected );
}
else {
auto prev = getPrev( node );
if ( !isNull( prev ) && (*prev.first)->GetLinked() )
(*prev.first)->SetSelected( selected );
}
}
}
}
/// Return a track in the list that comes after Track t
Track *TrackList::GetNext(Track * t, bool linked) const
{

View File

@ -1523,9 +1523,6 @@ public:
/// Make the list empty
void Clear(bool sendEvent = true);
/** Select a track, and if it is linked to another track, select it, too. */
void Select(Track * t, bool selected = true);
int GetGroupHeight(const Track * t) const;
bool CanMoveUp(Track * t) const;

View File

@ -104,7 +104,7 @@ UIHandle::Result LabelTextHandle::Click
while (t)
{
selectionState.SelectTrack
( *pProject->GetTracks(), *t, true, true,
( *t, true, true,
pProject->GetMixerBoard() );
t = iter.Next();
}
@ -113,7 +113,7 @@ UIHandle::Result LabelTextHandle::Click
// Do this after, for its effect on TrackPanel's memory of last selected
// track (which affects shift-click actions)
selectionState.SelectTrack
( *pProject->GetTracks(), *pLT, true, true,
( *pLT, true, true,
pProject->GetMixerBoard() );
}

View File

@ -563,7 +563,7 @@ UIHandle::Result SelectHandle::Click
selectionState.SelectNone( *trackList, pProject->GetMixerBoard() );
selectionState.SelectTrack
( *trackList, *pTrack, true, true, pProject->GetMixerBoard() );
( *pTrack, true, true, pProject->GetMixerBoard() );
// Default behavior: select whole track
SelectionState::SelectTrackLength
@ -617,7 +617,7 @@ UIHandle::Result SelectHandle::Click
// Don't toggle away the last selected track.
if( !bIsSelected || trackPanel->GetSelectedTrackCount() > 1 )
selectionState.SelectTrack
( *trackList, *pTrack, !bIsSelected, true, pMixerBoard );
( *pTrack, !bIsSelected, true, pMixerBoard );
}
double value;
@ -773,7 +773,7 @@ UIHandle::Result SelectHandle::Click
#endif
StartSelection(pProject);
selectionState.SelectTrack
( *trackList, *pTrack, true, true, pMixerBoard );
( *pTrack, true, true, pMixerBoard );
trackPanel->SetFocusedTrack(pTrack);
//On-Demand: check to see if there is an OD thing associated with this track.
if (pTrack->GetKind() == Track::Wave) {