mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-05 14:18:53 +02:00
Smarter SelectAllIfNone
Now if there is a time selection and no tracks selected, then just select all the tracks, preserving the time selection. This helps in the case a user has made a time selection, e.g. with selection toolbar, and then clicked on track panel, losing the selection of tracks but preserving the time selection. I also shortened some repeated cut-and-pasted code.
This commit is contained in:
parent
ddb8db8dd7
commit
35fe313f30
@ -2082,7 +2082,7 @@ void AudacityProject::SelectAllIfNone()
|
||||
auto flags = GetUpdateFlags();
|
||||
if(!(flags & TracksSelectedFlag) ||
|
||||
(mViewInfo.selectedRegion.isPoint()))
|
||||
OnSelectAll();
|
||||
OnSelectSomething();
|
||||
}
|
||||
|
||||
void AudacityProject::StopIfPaused()
|
||||
@ -5374,17 +5374,27 @@ void AudacityProject::OnSplitNew()
|
||||
RedrawProject();
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectSomething()
|
||||
{
|
||||
if( mViewInfo.selectedRegion.isPoint() )
|
||||
OnSelectAll();
|
||||
else
|
||||
OnSelectAllTracks();
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAll()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
|
||||
Track *t = iter.First();
|
||||
while (t) {
|
||||
t->SetSelected(true);
|
||||
t = iter.Next();
|
||||
}
|
||||
mViewInfo.selectedRegion.setTimes(
|
||||
mTracks->GetMinOffset(), mTracks->GetEndTime());
|
||||
OnSelectAllTracks();
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAllTracks()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetSelected(true);
|
||||
}
|
||||
|
||||
ModifyState(false);
|
||||
|
||||
@ -5393,6 +5403,19 @@ void AudacityProject::OnSelectAll()
|
||||
mMixerBoard->Refresh(false);
|
||||
}
|
||||
|
||||
void AudacityProject::SelectNone()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
Track *t = iter.First();
|
||||
while (t) {
|
||||
t->SetSelected(false);
|
||||
t = iter.Next();
|
||||
}
|
||||
mTrackPanel->Refresh(false);
|
||||
if (mMixerBoard)
|
||||
mMixerBoard->Refresh(false);
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectNone()
|
||||
{
|
||||
mViewInfo.selectedRegion.collapseToT0();
|
||||
@ -5723,20 +5746,6 @@ void AudacityProject::OnSelectSyncLockSel()
|
||||
mMixerBoard->Refresh(false);
|
||||
}
|
||||
|
||||
void AudacityProject::OnSelectAllTracks()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
for (Track *t = iter.First(); t; t = iter.Next()) {
|
||||
t->SetSelected(true);
|
||||
}
|
||||
|
||||
ModifyState(false);
|
||||
|
||||
mTrackPanel->Refresh(false);
|
||||
if (mMixerBoard)
|
||||
mMixerBoard->Refresh(false);
|
||||
}
|
||||
|
||||
//
|
||||
// View Menu
|
||||
//
|
||||
|
@ -276,6 +276,7 @@ void OnJoinLabels();
|
||||
void OnDisjoinLabels();
|
||||
|
||||
void OnSelectAll();
|
||||
void OnSelectSomething();
|
||||
void OnSelectNone();
|
||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||
void OnToggleSpectralSelection();
|
||||
|
@ -2311,7 +2311,9 @@ bool AudacityProject::TryToMakeActionAllowed
|
||||
if( (MissingFlags & ~( TimeSelectedFlag | WaveTracksSelectedFlag)) )
|
||||
return false;
|
||||
|
||||
OnSelectAll();
|
||||
// This was 'OnSelectAll'. Changing it to OnSelectSomething means if
|
||||
// selecting all tracks is enough, we just do that.
|
||||
OnSelectSomething();
|
||||
flags = GetUpdateFlags();
|
||||
bAllowed = ((flags & mask) == (flagsRqd & mask));
|
||||
return bAllowed;
|
||||
@ -4607,19 +4609,6 @@ void AudacityProject::Clear()
|
||||
RedrawProject();
|
||||
}
|
||||
|
||||
void AudacityProject::SelectNone()
|
||||
{
|
||||
TrackListIterator iter(GetTracks());
|
||||
Track *t = iter.First();
|
||||
while (t) {
|
||||
t->SetSelected(false);
|
||||
t = iter.Next();
|
||||
}
|
||||
mTrackPanel->Refresh(false);
|
||||
if (mMixerBoard)
|
||||
mMixerBoard->Refresh(false);
|
||||
}
|
||||
|
||||
// Utility function called by other zoom methods
|
||||
void AudacityProject::Zoom(double level)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user