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();
|
auto flags = GetUpdateFlags();
|
||||||
if(!(flags & TracksSelectedFlag) ||
|
if(!(flags & TracksSelectedFlag) ||
|
||||||
(mViewInfo.selectedRegion.isPoint()))
|
(mViewInfo.selectedRegion.isPoint()))
|
||||||
OnSelectAll();
|
OnSelectSomething();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudacityProject::StopIfPaused()
|
void AudacityProject::StopIfPaused()
|
||||||
@ -5374,17 +5374,27 @@ void AudacityProject::OnSplitNew()
|
|||||||
RedrawProject();
|
RedrawProject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AudacityProject::OnSelectSomething()
|
||||||
|
{
|
||||||
|
if( mViewInfo.selectedRegion.isPoint() )
|
||||||
|
OnSelectAll();
|
||||||
|
else
|
||||||
|
OnSelectAllTracks();
|
||||||
|
}
|
||||||
|
|
||||||
void AudacityProject::OnSelectAll()
|
void AudacityProject::OnSelectAll()
|
||||||
{
|
{
|
||||||
TrackListIterator iter(GetTracks());
|
|
||||||
|
|
||||||
Track *t = iter.First();
|
|
||||||
while (t) {
|
|
||||||
t->SetSelected(true);
|
|
||||||
t = iter.Next();
|
|
||||||
}
|
|
||||||
mViewInfo.selectedRegion.setTimes(
|
mViewInfo.selectedRegion.setTimes(
|
||||||
mTracks->GetMinOffset(), mTracks->GetEndTime());
|
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);
|
ModifyState(false);
|
||||||
|
|
||||||
@ -5393,6 +5403,19 @@ void AudacityProject::OnSelectAll()
|
|||||||
mMixerBoard->Refresh(false);
|
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()
|
void AudacityProject::OnSelectNone()
|
||||||
{
|
{
|
||||||
mViewInfo.selectedRegion.collapseToT0();
|
mViewInfo.selectedRegion.collapseToT0();
|
||||||
@ -5723,20 +5746,6 @@ void AudacityProject::OnSelectSyncLockSel()
|
|||||||
mMixerBoard->Refresh(false);
|
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
|
// View Menu
|
||||||
//
|
//
|
||||||
|
@ -276,6 +276,7 @@ void OnJoinLabels();
|
|||||||
void OnDisjoinLabels();
|
void OnDisjoinLabels();
|
||||||
|
|
||||||
void OnSelectAll();
|
void OnSelectAll();
|
||||||
|
void OnSelectSomething();
|
||||||
void OnSelectNone();
|
void OnSelectNone();
|
||||||
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
#ifdef EXPERIMENTAL_SPECTRAL_EDITING
|
||||||
void OnToggleSpectralSelection();
|
void OnToggleSpectralSelection();
|
||||||
|
@ -2311,7 +2311,9 @@ bool AudacityProject::TryToMakeActionAllowed
|
|||||||
if( (MissingFlags & ~( TimeSelectedFlag | WaveTracksSelectedFlag)) )
|
if( (MissingFlags & ~( TimeSelectedFlag | WaveTracksSelectedFlag)) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
OnSelectAll();
|
// This was 'OnSelectAll'. Changing it to OnSelectSomething means if
|
||||||
|
// selecting all tracks is enough, we just do that.
|
||||||
|
OnSelectSomething();
|
||||||
flags = GetUpdateFlags();
|
flags = GetUpdateFlags();
|
||||||
bAllowed = ((flags & mask) == (flagsRqd & mask));
|
bAllowed = ((flags & mask) == (flagsRqd & mask));
|
||||||
return bAllowed;
|
return bAllowed;
|
||||||
@ -4607,19 +4609,6 @@ void AudacityProject::Clear()
|
|||||||
RedrawProject();
|
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
|
// Utility function called by other zoom methods
|
||||||
void AudacityProject::Zoom(double level)
|
void AudacityProject::Zoom(double level)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user