From 09dab612fed1110905b7ae6d7454b2e4d7ea47b9 Mon Sep 17 00:00:00 2001 From: James Crook Date: Fri, 29 Mar 2019 22:11:22 +0000 Subject: [PATCH] Change AutoSelect to only select Audio. --- src/Menus.cpp | 4 ++-- src/Menus.h | 1 + src/Project.cpp | 2 +- src/menus/SelectMenus.cpp | 35 ++++++++++++++++++++++++++++++++++- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/Menus.cpp b/src/Menus.cpp index a17941644..8c4e8cd11 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -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; diff --git a/src/Menus.h b/src/Menus.h index 31b719856..6bedcf754 100644 --- a/src/Menus.h +++ b/src/Menus.h @@ -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 ); } diff --git a/src/Project.cpp b/src/Project.cpp index 9e50a1358..6052b9880 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -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. diff --git a/src/menus/SelectMenus.cpp b/src/menus/SelectMenus.cpp index e74f53445..84bb06669 100644 --- a/src/menus/SelectMenus.cpp +++ b/src/menus/SelectMenus.cpp @@ -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(t); + auto nt = dynamic_cast(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,