1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-27 06:07:59 +02:00

Bug 1484 - No ctrl-click toggling; History for anchor (mLastPickedTrack)

This commit is contained in:
James Crook 2016-10-04 09:05:47 +01:00
parent ea1015596c
commit 44375c252a

View File

@ -1914,6 +1914,11 @@ void TrackPanel::ChangeSelectionOnShiftClick(Track * pTrack){
// We will either extend from the first or from the last. // We will either extend from the first or from the last.
Track* pExtendFrom= nullptr; Track* pExtendFrom= nullptr;
if( mLastPickedTrack ){
pExtendFrom = mLastPickedTrack;
}
else
{
TrackListIterator iter(GetTracks()); TrackListIterator iter(GetTracks());
for (Track *t = iter.First(); t; t = iter.Next()) { for (Track *t = iter.First(); t; t = iter.Next()) {
const bool isSelected = t->GetSelected(); const bool isSelected = t->GetSelected();
@ -1931,12 +1936,14 @@ void TrackPanel::ChangeSelectionOnShiftClick(Track * pTrack){
// Our track was earlier than the first. Extend from the last. // Our track was earlier than the first. Extend from the last.
if( !pExtendFrom ) if( !pExtendFrom )
pExtendFrom = pLast; pExtendFrom = pLast;
}
SelectNone(); SelectNone();
if( pExtendFrom ) if( pExtendFrom )
SelectRangeOfTracks(pTrack, pExtendFrom); SelectRangeOfTracks(pTrack, pExtendFrom);
else else
SelectTrack( pTrack, true ); SelectTrack( pTrack, true );
mLastPickedTrack = pExtendFrom;
} }
/// This method gets called when we're handling selection /// This method gets called when we're handling selection
@ -1986,13 +1993,13 @@ void TrackPanel::SelectionHandleClick(wxMouseEvent & event,
if( bShiftDown ) if( bShiftDown )
ChangeSelectionOnShiftClick( pTrack ); ChangeSelectionOnShiftClick( pTrack );
if( bCtrlDown ){ if( bCtrlDown ){
bool bIsSelected = pTrack->GetSelected(); //Commented out bIsSelected toggles, as in Track Control Panel.
//bool bIsSelected = true; //bool bIsSelected = pTrack->GetSelected();
// could set bIsSelected true here, but toggling is more technically correct. //Actual bIsSelected will always add.
// if we want to match behaviour in Track Control Panel. bool bIsSelected = false;
// Don't toggle away the last selected track. // Don't toggle away the last selected track.
if( !bIsSelected || GetSelectedTrackCount() > 1 ) if( !bIsSelected || GetSelectedTrackCount() > 1 )
SelectTrack( pTrack, !bIsSelected, false ); SelectTrack( pTrack, !bIsSelected, true );
} }
double value; double value;