1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-25 16:48:44 +02:00

Fix static initialization order problem for more ReservedCommandFlags

This commit is contained in:
Paul Licameli 2020-01-29 11:15:19 -05:00
parent 25afa10bc4
commit ef41b8f2ee
4 changed files with 65 additions and 63 deletions

View File

@ -999,8 +999,8 @@ static CommandHandlerObject &findCommandHandler(AudacityProject &) {
MenuTable::BaseItemSharedPtr LabelEditMenus();
const ReservedCommandFlag
CutCopyAvailableFlag {
static const ReservedCommandFlag
&CutCopyAvailableFlag() { static ReservedCommandFlag flag{
[](const AudacityProject &project){
auto range = TrackList::Get( project ).Any<const LabelTrack>()
+ [&](const LabelTrack *pTrack){
@ -1022,7 +1022,7 @@ const ReservedCommandFlag
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
}};

View File

@ -19,7 +19,7 @@
namespace {
const ReservedCommandFlag
LabelsSelectedFlag{
&LabelsSelectedFlag() { static ReservedCommandFlag flag{
[](const AudacityProject &project){
// At least one label track selected, having at least one label
// completely within the time selection.
@ -40,7 +40,7 @@ const ReservedCommandFlag
+ 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),

View File

@ -770,12 +770,12 @@ MenuTable::BaseItemSharedPtr GenerateMenu()
return menu;
}
const ReservedCommandFlag
IsRealtimeNotActiveFlag{
static const ReservedCommandFlag
&IsRealtimeNotActiveFlag() { static ReservedCommandFlag flag{
[](const AudacityProject &){
return !RealtimeEffectManager::Get().RealtimeIsActive();
}
}; //lll
}; 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;

View File

@ -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,
},