Change AutoSelect to only select Audio.

This commit is contained in:
James Crook 2019-03-29 22:11:22 +00:00
parent 8b9518a90a
commit 09dab612fe
4 changed files with 38 additions and 4 deletions

View File

@ -813,8 +813,8 @@ bool MenuManager::TryToMakeActionAllowed
// This was 'DoSelectSomething()'.
// This made autoselect more confusing.
// When autoselect triggers, it might not select all audio in all tracks.
// So changed to DoSelectAll.
SelectActions::DoSelectAll(project);
// So changed to DoSelectAllAudio.
SelectActions::DoSelectAllAudio(project);
flags = GetMenuManager(project).GetUpdateFlags(project);
bAllowed = ((flags & mask) == (flagsRqd & mask));
return bAllowed;

View File

@ -119,6 +119,7 @@ void DoListSelection(
AudacityProject &project, Track *t,
bool shift, bool ctrl, bool modifyState );
void DoSelectAll( AudacityProject &project );
void DoSelectAllAudio( AudacityProject &project );
void DoSelectSomething( AudacityProject &project );
}

View File

@ -5701,7 +5701,7 @@ void AudacityProject::SelectAllIfNone()
auto flags = GetMenuManager(*this).GetUpdateFlags(*this);
if(!(flags & TracksSelectedFlag) ||
(mViewInfo.selectedRegion.isPoint()))
SelectActions::DoSelectAll(*this);
SelectActions::DoSelectAllAudio(*this);
}
// Stop playing or recording, if paused.

View File

@ -10,6 +10,7 @@
#include "../TimeDialog.h"
#include "../TrackPanel.h"
#include "../WaveTrack.h"
#include "../NoteTrack.h"
#include "../commands/CommandContext.h"
#include "../commands/CommandManager.h"
#include "../toolbars/ControlToolBar.h"
@ -30,8 +31,35 @@ void DoSelectTimeAndTracks
tracks->GetMinOffset(), tracks->GetEndTime());
if( bAllTracks ) {
for (auto t : tracks->Any())
for (auto t : tracks->Any()){
t->SetSelected(true);
}
project.ModifyState(false);
trackPanel->Refresh(false);
}
}
// Temporal selection (not TimeTrack selection)
// potentially for all wave or not tracks.
void DoSelectTimeAndAudioTracks
(AudacityProject &project, bool bAllTime, bool bAllTracks)
{
auto tracks = project.GetTracks();
auto trackPanel = project.GetTrackPanel();
auto &selectedRegion = project.GetViewInfo().selectedRegion;
if( bAllTime )
selectedRegion.setTimes(
tracks->GetMinOffset(), tracks->GetEndTime());
if( bAllTracks ) {
for (auto t : tracks->Any()){
auto wt = dynamic_cast<WaveTrack *>(t);
auto nt = dynamic_cast<NoteTrack *>(t);
if( wt || nt )
t->SetSelected(true);
}
project.ModifyState(false);
trackPanel->Refresh(false);
@ -482,6 +510,11 @@ void DoSelectAll(AudacityProject &project)
DoSelectTimeAndTracks( project, true, true );
}
void DoSelectAllAudio(AudacityProject &project)
{
DoSelectTimeAndAudioTracks( project, true, true );
}
// This function selects all tracks if no tracks selected,
// and all time if no time selected.
// There is an argument for making it just count wave tracks,