@@ -656,6 +656,17 @@ bool doesAnySelectedTrackHaveItems () {
656656 return false ;
657657}
658658
659+ bool isAnySelectedTrackAFolder () {
660+ int selCount = CountSelectedTracks2 (nullptr , true );
661+ for (int i = 0 ; i < selCount; ++i) {
662+ MediaTrack* track = GetSelectedTrack2 (nullptr , i, false );
663+ if (!track) continue ;
664+ if (GetMediaTrackInfo_Value (track, " I_FOLDERDEPTH" ) == 1 )
665+ return true ;
666+ }
667+ return false ;
668+ }
669+
659670const char * automationModeAsString (int mode) {
660671 // this works for track automation mode and global automation override.
661672 switch (mode) {
@@ -5660,12 +5671,13 @@ static HMENU addSubMenu(HMENU parent, int position, const char* label, bool enab
56605671
56615672void cmdShowPeakAndLoudnessMenu (Command* command) {
56625673 double startTS, endTS;
5663- GetSet_LoopTimeRange (false , false , &startTS, &endTS, false );
5674+ GetSet_LoopTimeRange (false , false , &startTS, &endTS, false );
56645675 int countTracks = CountTracks (nullptr );
56655676 int selTracks = CountSelectedTracks2 (nullptr , true );
56665677 int itemCount = CountMediaItems (nullptr );
56675678 int selItems = CountSelectedMediaItems (nullptr );
56685679 const bool selTracksHaveItems = doesAnySelectedTrackHaveItems ();
5680+ const bool selTracksIncludeFolder = isAnySelectedTrackAFolder ();
56695681 HMENU menu = CreatePopupMenu ();
56705682 // Master submenu
56715683 const bool nothingToDryRun = (startTS == endTS) && (countTracks == 0 || itemCount == 0 );
@@ -5679,14 +5691,15 @@ void cmdShowPeakAndLoudnessMenu(Command* command) {
56795691 }
56805692 // Tracks submenu
56815693 // Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5682- HMENU tracksSub = addSubMenu (menu, 1 , " Tracks" , selTracks > 0 );
5694+ HMENU tracksSub = addSubMenu (menu, 1 , " Tracks" , selTracks > 0
5695+ && (selTracksHaveItems || selTracksIncludeFolder));
56835696 if (selTracks > 0 ) {
56845697 // Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5685- addMenuItem (tracksSub, 0 , " Selected &tracks" , 3 , selTracksHaveItems);
5698+ addMenuItem (tracksSub, 0 , " Selected &tracks" , 3 , selTracksHaveItems || selTracksIncludeFolder );
56865699 // Translators: An entry in OSARA's context menu for analyzing loudness statistics.
56875700 addMenuItem (tracksSub, 1 , " Time &selection" , 4 , startTS != endTS);
56885701 // Translators: An entry in OSARA's context menu for analyzing loudness statistics.
5689- addMenuItem (tracksSub, 2 , " &Mono summed selected tracks" , 5 , selTracksHaveItems);
5702+ addMenuItem (tracksSub, 2 , " &Mono summed selected tracks" , 5 , selTracksHaveItems || selTracksIncludeFolder );
56905703 // Translators: An entry in OSARA's context menu for analyzing loudness statistics.
56915704 addMenuItem (tracksSub, 3 , " Mono summed time selection" , 6 , startTS != endTS);
56925705 }
@@ -5705,7 +5718,7 @@ void cmdShowPeakAndLoudnessMenu(Command* command) {
57055718 int id = TrackPopupMenu (menu, TPM_NONOTIFY | TPM_RETURNCMD, 0 , 0 , 0 , mainHwnd, nullptr );
57065719 switch (id) {
57075720 case 0 : return ; // canceled
5708- case 1 :Main_OnCommand (42440 , 0 ); break ; // Master mix
5721+ case 1 : Main_OnCommand (42440 , 0 ); break ; // Master mix
57095722 case 2 : Main_OnCommand (42441 , 0 ); break ; // Master mix within time selection
57105723 case 3 : Main_OnCommand (42438 , 0 ); break ; // Selected tracks
57115724 case 4 : Main_OnCommand (42439 , 0 ); break ; // Selected tracks within time selection
0 commit comments