diff --git a/src/menus/EditMenus.cpp b/src/menus/EditMenus.cpp index f25f7c160..8851959af 100644 --- a/src/menus/EditMenus.cpp +++ b/src/menus/EditMenus.cpp @@ -999,30 +999,30 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) { MenuTable::BaseItemSharedPtr LabelEditMenus(); -const ReservedCommandFlag - CutCopyAvailableFlag { - [](const AudacityProject &project){ - auto range = TrackList::Get( project ).Any() - + [&](const LabelTrack *pTrack){ - return LabelTrackView::Get( *pTrack ).IsTextSelected( - // unhappy const_cast because track focus might be set - const_cast(project) - ); - }; - if ( !range.empty() ) - return true; +static const ReservedCommandFlag +&CutCopyAvailableFlag() { static ReservedCommandFlag flag{ + [](const AudacityProject &project){ + auto range = TrackList::Get( project ).Any() + + [&](const LabelTrack *pTrack){ + return LabelTrackView::Get( *pTrack ).IsTextSelected( + // unhappy const_cast because track focus might be set + const_cast(project) + ); + }; + if ( !range.empty() ) + return true; - if ( - TimeSelectedPred( project ) - && - TracksSelectedPred( project ) - ) - return true; + if ( + TimeSelectedPred( project ) + && + TracksSelectedPred( project ) + ) + return true; - return false; - }, - cutCopyOptions() - }; + return false; + }, + cutCopyOptions() +}; return flag; } // Under /MenuBar MenuTable::BaseItemSharedPtr EditMenu() @@ -1072,14 +1072,14 @@ MenuTable::BaseItemSharedPtr EditMenu() // Basic Edit commands /* i18n-hint: (verb)*/ Command( wxT("Cut"), XXO("Cu&t"), FN(OnCut), - AudioIONotBusyFlag() | CutCopyAvailableFlag | NoAutoSelect(), + AudioIONotBusyFlag() | CutCopyAvailableFlag() | NoAutoSelect(), wxT("Ctrl+X") ), Command( wxT("Delete"), XXO("&Delete"), FN(OnDelete), AudioIONotBusyFlag() | TracksSelectedFlag() | TimeSelectedFlag() | NoAutoSelect(), wxT("Ctrl+K") ), /* i18n-hint: (verb)*/ Command( wxT("Copy"), XXO("&Copy"), FN(OnCopy), - AudioIONotBusyFlag() | CutCopyAvailableFlag, wxT("Ctrl+C") ), + AudioIONotBusyFlag() | CutCopyAvailableFlag(), wxT("Ctrl+C") ), /* i18n-hint: (verb)*/ Command( wxT("Paste"), XXO("&Paste"), FN(OnPaste), AudioIONotBusyFlag(), wxT("Ctrl+V") ), @@ -1197,7 +1197,7 @@ RegisteredMenuItemEnabler selectAnyTracks{{ RegisteredMenuItemEnabler selectWaveTracks{{ []{ return WaveTracksExistFlag(); }, - []{ return TimeSelectedFlag() | WaveTracksSelectedFlag() | CutCopyAvailableFlag; }, + []{ return TimeSelectedFlag() | WaveTracksSelectedFlag() | CutCopyAvailableFlag(); }, canSelectAll, selectAll }}; @@ -1205,7 +1205,7 @@ RegisteredMenuItemEnabler selectWaveTracks{{ // Also enable select for the noise reduction case. RegisteredMenuItemEnabler selectWaveTracks2{{ []{ return WaveTracksExistFlag(); }, - []{ return NoiseReductionTimeSelectedFlag() | WaveTracksSelectedFlag() | CutCopyAvailableFlag; }, + []{ return NoiseReductionTimeSelectedFlag() | WaveTracksSelectedFlag() | CutCopyAvailableFlag(); }, canSelectAll, selectAll }}; diff --git a/src/menus/LabelMenus.cpp b/src/menus/LabelMenus.cpp index f282b473d..7ce4e74d7 100644 --- a/src/menus/LabelMenus.cpp +++ b/src/menus/LabelMenus.cpp @@ -19,28 +19,28 @@ namespace { const ReservedCommandFlag - LabelsSelectedFlag{ - [](const AudacityProject &project){ - // At least one label track selected, having at least one label - // completely within the time selection. - const auto &selectedRegion = ViewInfo::Get( project ).selectedRegion; - const auto &test = [&]( const LabelTrack *pTrack ){ - const auto &labels = pTrack->GetLabels(); - return std::any_of( labels.begin(), labels.end(), - [&](const LabelStruct &label){ - return - label.getT0() >= selectedRegion.t0() - && - label.getT1() <= selectedRegion.t1() - ; - } - ); - }; - auto range = TrackList::Get( project ).Selected() - + test; - return !range.empty(); - } - }; +&LabelsSelectedFlag() { static ReservedCommandFlag flag{ + [](const AudacityProject &project){ + // At least one label track selected, having at least one label + // completely within the time selection. + const auto &selectedRegion = ViewInfo::Get( project ).selectedRegion; + const auto &test = [&]( const LabelTrack *pTrack ){ + const auto &labels = pTrack->GetLabels(); + return std::any_of( labels.begin(), labels.end(), + [&](const LabelStruct &label){ + return + label.getT0() >= selectedRegion.t0() + && + label.getT1() <= selectedRegion.t1() + ; + } + ); + }; + auto range = TrackList::Get( project ).Selected() + + test; + return !range.empty(); + } +}; return flag; } //Adds label and returns index of label in labeltrack. int DoAddLabel( @@ -595,7 +595,7 @@ MenuTable::BaseItemSharedPtr LabelEditMenus() static const auto NotBusyLabelsAndWaveFlags = AudioIONotBusyFlag() | - LabelsSelectedFlag | WaveTracksExistFlag() | TimeSelectedFlag(); + LabelsSelectedFlag() | WaveTracksExistFlag() | TimeSelectedFlag(); // Returns TWO menus. @@ -636,11 +636,11 @@ MenuTable::BaseItemSharedPtr LabelEditMenus() Menu( wxT("Labeled"), XO("La&beled Audio"), /* i18n-hint: (verb)*/ Command( wxT("CutLabels"), XXO("&Cut"), FN(OnCutLabels), - AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag() | + AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag() | TimeSelectedFlag() | IsNotSyncLockedFlag(), Options{ wxT("Alt+X"), XO("Label Cut") } ), Command( wxT("DeleteLabels"), XXO("&Delete"), FN(OnDeleteLabels), - AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag() | + AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag() | TimeSelectedFlag() | IsNotSyncLockedFlag(), Options{ wxT("Alt+K"), XO("Label Delete") } ), @@ -668,7 +668,7 @@ MenuTable::BaseItemSharedPtr LabelEditMenus() /* i18n-hint: (verb)*/ Command( wxT("SplitLabels"), XXO("Spli&t"), FN(OnSplitLabels), - AudioIONotBusyFlag() | LabelsSelectedFlag | WaveTracksExistFlag(), + AudioIONotBusyFlag() | LabelsSelectedFlag() | WaveTracksExistFlag(), Options{ wxT("Alt+I"), XO("Label Split") } ), /* i18n-hint: (verb)*/ Command( wxT("JoinLabels"), XXO("&Join"), FN(OnJoinLabels), diff --git a/src/menus/PluginMenus.cpp b/src/menus/PluginMenus.cpp index 665c4d914..4f9c9ecc3 100644 --- a/src/menus/PluginMenus.cpp +++ b/src/menus/PluginMenus.cpp @@ -770,12 +770,12 @@ MenuTable::BaseItemSharedPtr GenerateMenu() return menu; } -const ReservedCommandFlag - IsRealtimeNotActiveFlag{ - [](const AudacityProject &){ - return !RealtimeEffectManager::Get().RealtimeIsActive(); - } - }; //lll +static const ReservedCommandFlag +&IsRealtimeNotActiveFlag() { static ReservedCommandFlag flag{ + [](const AudacityProject &){ + return !RealtimeEffectManager::Get().RealtimeIsActive(); + } +}; return flag; } //lll // Under /MenuBar MenuTable::BaseItemSharedPtr EffectMenu() @@ -820,7 +820,7 @@ MenuTable::BaseItemSharedPtr EffectMenu() { return Items( wxEmptyString, PopulateEffectsMenu( EffectTypeProcess, AudioIONotBusyFlag() | TimeSelectedFlag() | WaveTracksSelectedFlag(), - IsRealtimeNotActiveFlag ) + IsRealtimeNotActiveFlag() ) ); } ) ) }; @@ -856,7 +856,7 @@ MenuTable::BaseItemSharedPtr AnalyzeMenu() { return Items( wxEmptyString, PopulateEffectsMenu( EffectTypeAnalyze, AudioIONotBusyFlag() | TimeSelectedFlag() | WaveTracksSelectedFlag(), - IsRealtimeNotActiveFlag ) + IsRealtimeNotActiveFlag() ) ); } ) ) }; return menu; diff --git a/src/tracks/ui/Scrubbing.cpp b/src/tracks/ui/Scrubbing.cpp index 297b0c13d..982afe73d 100644 --- a/src/tracks/ui/Scrubbing.cpp +++ b/src/tracks/ui/Scrubbing.cpp @@ -255,7 +255,9 @@ static const auto HasWaveDataPred = }; static const ReservedCommandFlag - HasWaveDataFlag{ HasWaveDataPred }; // jkc +&HasWaveDataFlag() { static ReservedCommandFlag flag{ + HasWaveDataPred +}; return flag; } // jkc namespace { struct MenuItem { @@ -278,12 +280,12 @@ namespace { "Seeking" is normal speed playback but with skips, ... */ { wxT("Scrub"), XO("&Scrub"), XO("Scrubbing"), - CaptureNotBusyFlag() | HasWaveDataFlag, + CaptureNotBusyFlag() | HasWaveDataFlag(), &Scrubber::OnScrub, false, &Scrubber::Scrubs, }, { wxT("Seek"), XO("See&k"), XO("Seeking"), - CaptureNotBusyFlag() | HasWaveDataFlag, + CaptureNotBusyFlag() | HasWaveDataFlag(), &Scrubber::OnSeek, true, &Scrubber::Seeks, },