From b85f408680332d1174c512d285fb74c09a6d9833 Mon Sep 17 00:00:00 2001 From: culler Date: Sun, 20 Oct 2019 21:07:46 +0000 Subject: Fix [bfdd89cc6b]: on macOS hide the File->Run Widget Demo menu item while the demo is running. --- macosx/tkMacOSXMenus.c | 15 ++++++++------- macosx/tkMacOSXPrivate.h | 3 ++- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/macosx/tkMacOSXMenus.c b/macosx/tkMacOSXMenus.c index 5e6a37c..d47f8df 100644 --- a/macosx/tkMacOSXMenus.c +++ b/macosx/tkMacOSXMenus.c @@ -70,9 +70,8 @@ static Tcl_Obj * GetWidgetDemoPath(Tcl_Interp *interp); [NSMenuItem itemWithTitle: [NSString stringWithFormat:@"About %@", aboutName] action:@selector(orderFrontStandardAboutPanel:)] atIndex:0]; - - TKMenu *fileMenu = [TKMenu menuWithTitle:@"File" menuItems: - [NSArray arrayWithObjects: + _defaultFileMenuItems = + [[NSArray arrayWithObjects: [NSMenuItem itemWithTitle: [NSString stringWithFormat:@"Source%C", 0x2026] action:@selector(tkSource:)], @@ -80,7 +79,10 @@ static Tcl_Obj * GetWidgetDemoPath(Tcl_Interp *interp); action:@selector(tkDemo:)], [NSMenuItem itemWithTitle:@"Close" action:@selector(performClose:) target:nil keyEquivalent:@"w"], - nil]]; + nil] retain]; + _demoMenuItem = [_defaultFileMenuItems objectAtIndex:1]; + TKMenu *fileMenu = [TKMenu menuWithTitle:@"File" + menuItems: _defaultFileMenuItems]; TKMenu *editMenu = [TKMenu menuWithTitle:@"Edit" menuItems: [NSArray arrayWithObjects: [NSMenuItem itemWithTitle:@"Undo" action:@selector(undo:) @@ -141,16 +143,13 @@ static Tcl_Obj * GetWidgetDemoPath(Tcl_Interp *interp); [_defaultWindowsMenuItems retain]; TKMenu *windowsMenu = [TKMenu menuWithTitle:@"Window" menuItems: _defaultWindowsMenuItems]; - _defaultHelpMenuItems = [[NSArray arrayWithObjects: [NSMenuItem itemWithTitle: [NSString stringWithFormat:@"%@ Help", applicationName] action:@selector(showHelp:) keyEquivalent:@"?"], nil] retain]; - TKMenu *helpMenu = [TKMenu menuWithTitle:@"Help" menuItems: _defaultHelpMenuItems]; - [self setServicesMenu:_servicesMenu]; [self setWindowsMenu:windowsMenu]; _defaultMainMenu = [[TKMenu menuWithTitle:@"" submenus:[NSArray @@ -169,6 +168,7 @@ static Tcl_Obj * GetWidgetDemoPath(Tcl_Interp *interp); [_defaultHelpMenuItems release]; [_defaultWindowsMenuItems release]; [_defaultApplicationMenuItems release]; + [_defaultFileMenuItems release]; [super dealloc]; } @@ -262,6 +262,7 @@ static Tcl_Obj * GetWidgetDemoPath(Tcl_Interp *interp); if (path) { Tcl_IncrRefCount(path); + [_demoMenuItem setHidden:YES]; int code = Tcl_FSEvalFileEx(_eventInterp, path, NULL); if (code != TCL_OK) { diff --git a/macosx/tkMacOSXPrivate.h b/macosx/tkMacOSXPrivate.h index 2657eb5..511c9f2 100644 --- a/macosx/tkMacOSXPrivate.h +++ b/macosx/tkMacOSXPrivate.h @@ -265,8 +265,9 @@ VISIBILITY_HIDDEN Tcl_Interp *_eventInterp; NSMenu *_servicesMenu; TKMenu *_defaultMainMenu, *_defaultApplicationMenu; + NSMenuItem *_demoMenuItem; NSArray *_defaultApplicationMenuItems, *_defaultWindowsMenuItems; - NSArray *_defaultHelpMenuItems; + NSArray *_defaultHelpMenuItems, *_defaultFileMenuItems; NSAutoreleasePool *_mainPool; #ifdef __i386__ /* The Objective C runtime used on i386 requires this. */ -- cgit v0.12