diff options
| author | Teddy Wing | 2023-08-21 22:01:01 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2023-08-21 22:01:01 +0200 | 
| commit | 83d4f4cb3d7b0da2fbfa7d07d97e3929005279b2 (patch) | |
| tree | dcf916f17a225d5b86a4a4347b6085035c497a19 | |
| parent | 18cd57119cf6eb67dd0ac8d4d49f50110cbb74e3 (diff) | |
| download | Base-Windowed-Application-83d4f4cb3d7b0da2fbfa7d07d97e3929005279b2.tar.bz2 | |
MainMenu: Add missing Command modifier if missing from Font menu items
I don't understand why, but on Mac OS X 10.15, three menu items in the
automatically-generated Font menu don't have a Command key modifier.
Detect when this happens and add the modifier to the mask.
These menu items correctly had a Command key modifier when I tested the
code on macOS 13.
| -rw-r--r-- | src/MainMenu.m | 39 | 
1 files changed, 18 insertions, 21 deletions
| diff --git a/src/MainMenu.m b/src/MainMenu.m index 8e4f1da..481f5c6 100644 --- a/src/MainMenu.m +++ b/src/MainMenu.m @@ -464,29 +464,29 @@ BOOL MainMenuNSMenuItemHasKeyEquivalentModifierMaskCommand(NSMenuItem *menu_item  		return YES;  	} -	// NSLog(@"MainMenuNSMenuItemHasKeyEquivalentModifierMaskCommand mask: %lu", [menu_item keyEquivalentModifierMask]); -	// NSLog(@"MainMenuNSMenuItemHasKeyEquivalentModifierMaskCommand NO");  	return NO;  } -void MainMenuFixFontMenuKeyEquivalentModifierMask(NSMenu *font_menu) +void MainMenuAddMissingCommandModifier(NSMenuItem *menu_item)  { -	NSMenuItem *show_colors_menu_item = [font_menu itemWithTitle:@"Show Colors"]; - -	if ( -		!MainMenuNSMenuItemHasKeyEquivalentModifierMaskCommand( -			show_colors_menu_item -		) -	) { -		// [show_colors_menu_item setKeyEquivalent:@"C"]; -		// NSLog(@"colors: %@", [show_colors_menu_item keyEquivalent]); -		// [show_colors_menu_item setKeyEquivalentModifierMask:NSEventModifierFlagCommand]; -		[show_colors_menu_item -			setKeyEquivalentModifierMask: -				NSEventModifierFlagCommand -				| [show_colors_menu_item keyEquivalentModifierMask]]; -		// NSLog(@"show_colors_menu_item mask: %lu", [show_colors_menu_item keyEquivalentModifierMask]); +	if (MainMenuNSMenuItemHasKeyEquivalentModifierMaskCommand(menu_item)) { +		return;  	} + +	[menu_item +		setKeyEquivalentModifierMask: +			NSEventModifierFlagCommand | [menu_item keyEquivalentModifierMask]]; +} + +// On Mac OS X 10.15, some menu items did not include the Apple key in the +// Font menu item's modifier mask. +// +// Fix this by adding the modifier if necessary. +void MainMenuFixFontMenuKeyEquivalentModifierMask(NSMenu *font_menu) +{ +	MainMenuAddMissingCommandModifier([font_menu itemWithTitle:@"Show Colors"]); +	MainMenuAddMissingCommandModifier([font_menu itemWithTitle:@"Copy Style"]); +	MainMenuAddMissingCommandModifier([font_menu itemWithTitle:@"Paste Style"]);  }  NSMenuItem *MainMenuCreateFormatMenuItem() @@ -503,10 +503,7 @@ NSMenuItem *MainMenuCreateFormatMenuItem()  		keyEquivalent:@""];  	NSFontManager *font_manager = [NSFontManager sharedFontManager]; -	// NSMenu *font_menu = [[NSMenu alloc] initWithTitle:@"Font"];  	NSMenu *font_menu = [font_manager fontMenu:YES]; -	NSLog(@"Font menu: %@", font_menu); -	NSLog(@"Font menu: %lu", [[font_menu itemAtIndex:14] keyEquivalentModifierMask] & NSEventModifierFlagCommand);  	[format_menu  		setSubmenu:font_menu  		forItem:font_menu_item]; | 
