diff options
Diffstat (limited to 'macosx/tkMacOSXMenu.c')
-rw-r--r-- | macosx/tkMacOSXMenu.c | 259 |
1 files changed, 177 insertions, 82 deletions
diff --git a/macosx/tkMacOSXMenu.c b/macosx/tkMacOSXMenu.c index 1f59f71..8fd7136 100644 --- a/macosx/tkMacOSXMenu.c +++ b/macosx/tkMacOSXMenu.c @@ -10,7 +10,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXMenu.c,v 1.52 2009/06/29 14:35:01 das Exp $ + * RCS: @(#) $Id: tkMacOSXMenu.c,v 1.53 2009/07/06 15:45:54 dkf Exp $ */ #include "tkMacOSXPrivate.h" @@ -32,6 +32,7 @@ #define ENTRY_WINDOWS_MENU ENTRY_PLATFORM_FLAG3 #define sl(s) ((int) (sizeof(s "") - 1)) + #define SPECIALMENU(n, f) {.name = "." #n, .len = sl(#n) + 1, \ .flag = ENTRY_##f##_MENU } static const struct { @@ -43,6 +44,7 @@ static const struct { {NULL} }; #undef SPECIALMENU + #define MODIFIER(n, f) {.name = #n, .len = sl(#n), .mask = f } static const struct { const char *name; const size_t len; const NSUInteger mask; @@ -59,6 +61,7 @@ static const struct { {NULL} }; #undef MODIFIER + #define ACCEL(n, c) {.name = #n, .len = sl(#n), .ch = c } static const struct { const char *name; const size_t len; const UniChar ch; @@ -108,10 +111,10 @@ static int ModifierCharWidth(Tk_Font tkfont); #pragma mark TKMenu @interface TKMenu(TKMenuPrivate) -- (id)initWithTkMenu:(TkMenu *)tkMenu; -- (TkMenu *)tkMenu; -- (int)tkIndexOfItem:(NSMenuItem *)menuItem; -- (void)insertItem:(NSMenuItem *)newItem atTkIndex:(NSInteger)index; +- (id) initWithTkMenu: (TkMenu *) tkMenu; +- (TkMenu *) tkMenu; +- (int) tkIndexOfItem: (NSMenuItem *) menuItem; +- (void) insertItem: (NSMenuItem *) newItem atTkIndex: (NSInteger) index; @end #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 @@ -123,17 +126,21 @@ static int ModifierCharWidth(Tk_Font tkfont); @end @implementation TKMenu -- (void)setSpecial:(NSUInteger)special { +- (void) setSpecial: (NSUInteger) special +{ NSAssert(!_tkSpecial, @"Cannot change specialness of a special menu"); _tkSpecial = special; } -- (BOOL)isSpecial:(NSUInteger)special { +- (BOOL) isSpecial: (NSUInteger) special +{ return (_tkSpecial == special); } @end @implementation TKMenu(TKMenuPrivate) -- (id)initWithTitle:(NSString *)aTitle { + +- (id) initWithTitle: (NSString *) aTitle +{ self = [super initWithTitle:aTitle]; if (self) { _tkMenu = NULL; @@ -144,9 +151,12 @@ static int ModifierCharWidth(Tk_Font tkfont); } return self; } -- (id)initWithTkMenu:(TkMenu *)tkMenu { + +- (id) initWithTkMenu: (TkMenu *) tkMenu +{ NSString *title = [[NSString alloc] initWithUTF8String: Tk_PathName(tkMenu->tkwin)]; + self = [self initWithTitle:title]; [title release]; if (self) { @@ -154,8 +164,11 @@ static int ModifierCharWidth(Tk_Font tkfont); } return self; } -- (id)copyWithZone:(NSZone *)zone { + +- (id) copyWithZone: (NSZone *) zone +{ TKMenu *copy = [super copyWithZone:zone]; + NSAssert(_tkMenu == nil, @"Cannot copy tkMenu"); copy->_tkMenu = _tkMenu; copy->_tkOffset = _tkOffset; @@ -163,17 +176,25 @@ static int ModifierCharWidth(Tk_Font tkfont); copy->_tkSpecial = _tkSpecial; return copy; } -- (TkMenu *)tkMenu { + +- (TkMenu *) tkMenu +{ return _tkMenu; } -- (int)tkIndexOfItem:(NSMenuItem *)menuItem { + +- (int) tkIndexOfItem: (NSMenuItem *) menuItem +{ return [self indexOfItem:menuItem] - _tkOffset; } -- (void)insertItem:(NSMenuItem *)newItem atTkIndex:(NSInteger)index { + +- (void) insertItem: (NSMenuItem *) newItem atTkIndex: (NSInteger) index +{ [super insertItem:newItem atIndex:index + _tkOffset]; _tkItemCount++; } -- (void)insertItem:(NSMenuItem *)newItem atIndex:(NSInteger)index { + +- (void) insertItem: (NSMenuItem *) newItem atIndex: (NSInteger) index +{ if (_tkMenu && index >= 0) { if ((NSUInteger)index <= _tkOffset) { _tkOffset++; @@ -184,7 +205,9 @@ static int ModifierCharWidth(Tk_Font tkfont); } [super insertItem:newItem atIndex:index]; } -- (void)removeItemAtIndex:(NSInteger)index { + +- (void) removeItemAtIndex: (NSInteger) index +{ if (_tkMenu && index >= 0) { if ((NSUInteger)index < _tkOffset) { _tkOffset--; @@ -194,9 +217,12 @@ static int ModifierCharWidth(Tk_Font tkfont); } [super removeItemAtIndex:index]; } -- (NSMenuItem *)newTkMenuItem:(TkMenuEntry *)mePtr { + +- (NSMenuItem *) newTkMenuItem: (TkMenuEntry *) mePtr +{ NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"" - action:@selector(tkMenuItemInvoke:) keyEquivalent:@""]; + action:@selector(tkMenuItemInvoke:) keyEquivalent:@""]; + [menuItem setTarget:self]; [menuItem setTag:(NSInteger)mePtr]; return menuItem; @@ -205,25 +231,34 @@ static int ModifierCharWidth(Tk_Font tkfont); @implementation TKMenu(TKMenuActions) // target methods -- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + +- (BOOL) validateMenuItem: (NSMenuItem *) menuItem +{ return [menuItem isEnabled]; } -- (void)tkMenuItemInvoke:(id)sender { + +- (void) tkMenuItemInvoke: (id) sender +{ /* * With the delegate matching key equivalents, when a menu action is sent * in response to a key equivalent, sender is the whole menu and not the - * the specific menu item, use this to ignore key equivalents for our menus - * (as Tk handles them directly via bindings). + * the specific menu item, use this to ignore key equivalents for our + * menus (as Tk handles them directly via bindings). */ + if ([sender isKindOfClass:[NSMenuItem class]]) { NSMenuItem *menuItem = (NSMenuItem *)sender; TkMenu *menuPtr = (TkMenu *)_tkMenu; TkMenuEntry *mePtr = (TkMenuEntry *)[menuItem tag]; + if (menuPtr && mePtr) { Tcl_Interp *interp = menuPtr->interp; + Tcl_Preserve(interp); Tcl_Preserve(menuPtr); + int result = TkInvokeMenu(interp, menuPtr, mePtr->index); + if (result != TCL_OK && result != TCL_CONTINUE && result != TCL_BREAK) { Tcl_AddErrorInfo(interp, "\n (menu invoke)"); @@ -243,20 +278,26 @@ static int ModifierCharWidth(Tk_Font tkfont); ((km) & NSControlKeyMask) != ((m) & NSControlKeyMask) || \ (((km) & NSShiftKeyMask) != ((m) & NSShiftKeyMask) && \ ((m) & NSFunctionKeyMask))) ? NO : YES) -- (BOOL)menuHasKeyEquivalent:(NSMenu*)menu forEvent:(NSEvent*)event - target:(id*)target action:(SEL*)action { + +- (BOOL) menuHasKeyEquivalent: (NSMenu *) menu forEvent: (NSEvent *) event + target: (id *) target action: (SEL *) action +{ NSString *key = [event charactersIgnoringModifiers]; NSUInteger modifiers = [event modifierFlags] & NSDeviceIndependentModifierFlagsMask; + if (modifiers == (NSCommandKeyMask | NSShiftKeyMask) && [key compare:@"?"] == NSOrderedSame) { return NO; } + NSArray *itemArray = [self itemArray]; + for (NSMenuItem *item in itemArray) { if ([item isEnabled] && [[item keyEquivalent] compare:key] == NSOrderedSame) { NSUInteger keyEquivModifiers = [item keyEquivalentModifierMask]; + if (keyEquivModifiersMatch(keyEquivModifiers, modifiers)) { *target = [item target]; *action = [item action]; @@ -266,31 +307,43 @@ static int ModifierCharWidth(Tk_Font tkfont); } return NO; } -- (void)menuWillOpen:(NSMenu *)menu { + +- (void) menuWillOpen: (NSMenu *) menu +{ if (_tkMenu) { //RecursivelyClearActiveMenu(_tkMenu); GenerateMenuSelectEvent((TKMenu *)[self supermenu], [self itemInSupermenu]); } } -- (void)menuDidClose:(NSMenu *)menu { + +- (void) menuDidClose: (NSMenu *) menu +{ if (_tkMenu) { RecursivelyClearActiveMenu(_tkMenu); } } -- (void)menu:(NSMenu *)menu willHighlightItem:(NSMenuItem *)item { + +- (void) menu: (NSMenu *) menu willHighlightItem: (NSMenuItem *) item +{ if (_tkMenu) { GenerateMenuSelectEvent(self, item); } } -- (void)menuNeedsUpdate:(NSMenu*)menu { - TkMenu *menuPtr = (TkMenu *)_tkMenu; + +- (void) menuNeedsUpdate: (NSMenu *) menu +{ + TkMenu *menuPtr = (TkMenu *) _tkMenu; + if (menuPtr) { Tcl_Interp *interp = menuPtr->interp; + Tcl_Preserve(interp); Tcl_Preserve(menuPtr); + int result = TkPostCommand(_tkMenu); - if (result != TCL_OK && result != TCL_CONTINUE && result != TCL_BREAK) { + + if (result!=TCL_OK && result!=TCL_CONTINUE && result!=TCL_BREAK) { Tcl_AddErrorInfo(interp, "\n (menu preprocess)"); Tcl_BackgroundException(interp, result); } @@ -303,18 +356,22 @@ static int ModifierCharWidth(Tk_Font tkfont); #pragma mark TKApplication(TKMenu) @interface NSApplication(TKMenu) -- (void)setAppleMenu:(NSMenu *)menu; +- (void) setAppleMenu: (NSMenu *) menu; @end @implementation TKApplication(TKMenu) -- (void)menuBeginTracking:(NSNotification *)notification { + +- (void) menuBeginTracking: (NSNotification *) notification +{ #ifdef TK_MAC_DEBUG_NOTIFICATIONS TKLog(@"-[%@(%p) %s] %@", [self class], self, _cmd, notification); #endif //TkMacOSXClearMenubarActive(); //TkMacOSXPreprocessMenu(); } -- (void)menuEndTracking:(NSNotification *)notification { + +- (void) menuEndTracking: (NSNotification *) notification +{ #ifdef TK_MAC_DEBUG_NOTIFICATIONS TKLog(@"-[%@(%p) %s] %@", [self class], self, _cmd, notification); #endif @@ -322,16 +379,22 @@ static int ModifierCharWidth(Tk_Font tkfont); TkMacOSXClearMenubarActive(); } } -- (void)tkSetMainMenu:(TKMenu *)menu { + +- (void) tkSetMainMenu: (TKMenu *) menu +{ if (gNoTkMenus) { return; } + TKMenu *applicationMenu = nil; + if (menu) { NSMenuItem *applicationMenuItem = [menu numberOfItems] ? [menu itemAtIndex:0] : nil; + if (![menu isSpecial:tkMainMenu]) { TkMenuEntry *mePtr = (TkMenuEntry *)[applicationMenuItem tag]; + if (!mePtr || !(mePtr->entryFlags & ENTRY_APPLE_MENU)) { applicationMenuItem = [NSMenuItem itemWithSubmenu: [[_defaultApplicationMenu copy] autorelease]]; @@ -346,14 +409,18 @@ static int ModifierCharWidth(Tk_Font tkfont); } [applicationMenu setSpecial:tkApplicationMenu]; } + NSArray *itemArray = [menu itemArray]; + for (NSMenuItem *item in itemArray) { TkMenuEntry *mePtr = (TkMenuEntry *)[item tag]; TKMenu *submenu = (TKMenu *)[item submenu]; + if (mePtr && submenu) { if ((mePtr->entryFlags & ENTRY_WINDOWS_MENU) && ![submenu isSpecial:tkWindowsMenu]) { NSInteger index = 0; + for (NSMenuItem *i in _defaultWindowsMenuItems) { [submenu insertItem:[[i copy] autorelease] atIndex: index++]; @@ -363,6 +430,7 @@ static int ModifierCharWidth(Tk_Font tkfont); } else if ((mePtr->entryFlags & ENTRY_HELP_MENU) && ![submenu isSpecial:tkHelpMenu]) { NSInteger index = 0; + for (NSMenuItem *i in _defaultHelpMenuItems) { [submenu insertItem:[[i copy] autorelease] atIndex: index++]; @@ -375,7 +443,10 @@ static int ModifierCharWidth(Tk_Font tkfont); menu = _defaultMainMenu; applicationMenu = _defaultApplicationMenu; } - NSMenuItem *servicesMenuItem = [applicationMenu itemWithTitle:@"Services"]; + + NSMenuItem *servicesMenuItem = + [applicationMenu itemWithTitle:@"Services"]; + if (servicesMenuItem && [servicesMenuItem submenu] != _servicesMenu) { [[_servicesMenu itemInSupermenu] setSubmenu:nil]; [servicesMenuItem setSubmenu:_servicesMenu]; @@ -399,8 +470,8 @@ static int ModifierCharWidth(Tk_Font tkfont); * Returns a standard Tcl error. * * Side effects: - * Allocates a NSMenu and puts it into the platformData field - * of the menuPtr. + * Allocates a NSMenu and puts it into the platformData field of the + * menuPtr. * *---------------------------------------------------------------------- */ @@ -472,8 +543,12 @@ TkpMenuNewEntry( } mePtr->platformEntryData = (TkMenuPlatformEntryData) TkMacOSXMakeUncollectable(menuItem); - /* Caller TkMenuEntry() already did this same insertion into the generic - * TkMenu so we just match it for the platform menu. */ + + /* + * Caller TkMenuEntry() already did this same insertion into the generic + * TkMenu so we just match it for the platform menu. + */ + [menu insertItem:menuItem atTkIndex:mePtr->index]; return TCL_OK; } @@ -521,6 +596,7 @@ TkpConfigureMenuEntry( } else if (mePtr->bitmapPtr != None) { Pixmap bitmap = Tk_GetBitmapFromObj(mePtr->menuPtr->tkwin, mePtr->bitmapPtr); + Tk_SizeOfBitmap(mePtr->menuPtr->display, bitmap, &imageWidth, &imageHeight); image = TkMacOSXGetNSImageWithBitmap(mePtr->menuPtr->display, bitmap, @@ -543,8 +619,9 @@ TkpConfigureMenuEntry( attributes = TkMacOSXNSFontAttributesForFont(Tk_GetFontFromObj( mePtr->menuPtr->tkwin, fontPtr)); if (gc->foreground != defaultFg || gc->background != defaultBg) { - NSColor *color = TkMacOSXGetNSColor(gc, gc->foreground != defaultFg ? - gc->foreground : gc->background); + NSColor *color = TkMacOSXGetNSColor(gc, + gc->foreground!=defaultFg? gc->foreground:gc->background); + attributes = [[attributes mutableCopy] autorelease]; [(NSMutableDictionary *)attributes setObject:color forKey:NSForegroundColorAttributeName]; @@ -575,10 +652,12 @@ TkpConfigureMenuEntry( submenu = (TKMenu *) menuRefPtr->menuPtr->platformData; if ([submenu supermenu] && [menuItem submenu] != submenu) { /* - * This happens during a clone, where the parent menu is cloned - * before its children, so just ignore this temprary setting, - * it will be changed shortly (c.f. tkMenu.c CloneMenu()) - */ + * This happens during a clone, where the parent menu is + * cloned before its children, so just ignore this temprary + * setting, it will be changed shortly (c.f. tkMenu.c + * CloneMenu()) + */ + submenu = nil; } else { [submenu setTitle:title]; @@ -611,8 +690,9 @@ TkpDestroyMenuEntry( { if (mePtr->platformEntryData && mePtr->menuPtr->platformData) { TKMenu *menu = (TKMenu *) mePtr->menuPtr->platformData; - NSMenuItem *menuItem = (NSMenuItem *)mePtr->platformEntryData; + NSMenuItem *menuItem = (NSMenuItem *) mePtr->platformEntryData; NSInteger index = [menu indexOfItem:menuItem]; + if (index > -1) { [menu removeItemAtIndex:index]; } @@ -646,26 +726,30 @@ TkpPostMenu( int y) /* The global y-coordinate */ { NSWindow *win = [NSApp keyWindow]; - if (win) { - inPostMenu = 1; - int oldMode = Tcl_SetServiceMode(TCL_SERVICE_NONE); - NSView *view = [win contentView]; - NSRect frame = NSMakeRect(x + 9, tkMacOSXZeroScreenHeight - y - 9, 1, 1); - frame.origin = [view convertPoint: - [win convertScreenToBase:frame.origin] fromView:nil]; - NSMenu *menu = (NSMenu *) menuPtr->platformData; - NSPopUpButtonCell *popUpButtonCell = [[NSPopUpButtonCell alloc] - initTextCell:@"" pullsDown:NO]; - [popUpButtonCell setMenu:menu]; - [popUpButtonCell selectItem:nil]; - [popUpButtonCell performClickWithFrame:frame inView:view]; - [popUpButtonCell release]; - Tcl_SetServiceMode(oldMode); - inPostMenu = 0; - return TCL_OK; - } else { + if (!win) { return TCL_ERROR; } + + inPostMenu = 1; + + int oldMode = Tcl_SetServiceMode(TCL_SERVICE_NONE); + NSView *view = [win contentView]; + NSRect frame = NSMakeRect(x + 9, tkMacOSXZeroScreenHeight - y - 9, 1, 1); + + frame.origin = [view convertPoint: + [win convertScreenToBase:frame.origin] fromView:nil]; + + NSMenu *menu = (NSMenu *) menuPtr->platformData; + NSPopUpButtonCell *popUpButtonCell = [[NSPopUpButtonCell alloc] + initTextCell:@"" pullsDown:NO]; + + [popUpButtonCell setMenu:menu]; + [popUpButtonCell selectItem:nil]; + [popUpButtonCell performClickWithFrame:frame inView:view]; + [popUpButtonCell release]; + Tcl_SetServiceMode(oldMode); + inPostMenu = 0; + return TCL_OK; } /* @@ -723,8 +807,10 @@ TkpSetMainMenubar( { static Tcl_Interp *currentInterp = NULL; TKMenu *menu = nil; + if (menuName) { TkWindow *winPtr = (TkWindow *) tkwin; + if (winPtr->wmInfoPtr && winPtr->wmInfoPtr->menuPtr && winPtr->wmInfoPtr->menuPtr->masterMenuPtr && winPtr->wmInfoPtr->menuPtr->masterMenuPtr->tkwin && @@ -734,6 +820,7 @@ TkpSetMainMenubar( } else { TkMenuReferences *menuRefPtr = TkFindMenuReferences(interp, menuName); + if (menuRefPtr && menuRefPtr->menuPtr && menuRefPtr->menuPtr->platformData) { menu = (TKMenu *) menuRefPtr->menuPtr->platformData; @@ -751,9 +838,9 @@ TkpSetMainMenubar( * * CheckForSpecialMenu -- * - * Given a menu, check to see whether or not it is a cascade in - * a menubar with one of the special names .apple, .help or .window - * If it is, the entry that points to this menu will be marked. + * Given a menu, check to see whether or not it is a cascade in a menubar + * with one of the special names .apple, .help or .window If it is, the + * entry that points to this menu will be marked. * * Results: * None. @@ -772,7 +859,8 @@ CheckForSpecialMenu( return; } for (TkMenuEntry *cascadeEntryPtr = menuPtr->menuRefPtr->parentEntryPtr; - cascadeEntryPtr; cascadeEntryPtr = cascadeEntryPtr->nextCascadePtr) { + cascadeEntryPtr; + cascadeEntryPtr = cascadeEntryPtr->nextCascadePtr) { if (cascadeEntryPtr->menuPtr->menuType == MENUBAR && cascadeEntryPtr->menuPtr->masterMenuPtr->tkwin) { TkMenu *masterMenuPtr = cascadeEntryPtr->menuPtr->masterMenuPtr; @@ -815,7 +903,7 @@ CheckForSpecialMenu( *---------------------------------------------------------------------- */ -static NSString* +static NSString * ParseAccelerator( const char *accel, NSUInteger *maskPtr) @@ -893,12 +981,14 @@ ParseAccelerator( */ static int -ModifierCharWidth(Tk_Font tkfont) +ModifierCharWidth( + Tk_Font tkfont) { static NSString *cmdChar = nil; if (!cmdChar) { unichar cmd = kCommandUnicode; + cmdChar = [[NSString alloc] initWithCharacters:&cmd length:1]; } return [cmdChar sizeWithAttributes: @@ -1023,6 +1113,7 @@ TkpComputeStandardMenuGeometry( } else if (mePtr->bitmapPtr) { Pixmap bitmap = Tk_GetBitmapFromObj(menuPtr->tkwin, mePtr->bitmapPtr); + Tk_SizeOfBitmap(menuPtr->display, bitmap, &width, &height); haveImage = 1; } @@ -1145,6 +1236,7 @@ GenerateMenuSelectEvent( if (menuPtr) { int index = [menu tkIndexOfItem:menuItem]; + if (index < 0 || index >= menuPtr->numEntries || (menuPtr->entries[index])->state == ENTRY_DISABLED) { TkActivateMenuEntry(menuPtr, -1); @@ -1222,16 +1314,15 @@ RecursivelyClearActiveMenu( TkMenu *menuPtr) /* The menu to reset. */ { int i; - TkMenuEntry *mePtr; TkActivateMenuEntry(menuPtr, -1); for (i = 0; i < menuPtr->numEntries; i++) { - mePtr = menuPtr->entries[i]; - if (mePtr->type == CASCADE_ENTRY) { - if ((mePtr->childMenuRefPtr != NULL) - && (mePtr->childMenuRefPtr->menuPtr != NULL)) { - RecursivelyClearActiveMenu(mePtr->childMenuRefPtr->menuPtr); - } + TkMenuEntry *mePtr = menuPtr->entries[i]; + + if (mePtr->type == CASCADE_ENTRY + && (mePtr->childMenuRefPtr != NULL) + && (mePtr->childMenuRefPtr->menuPtr != NULL)) { + RecursivelyClearActiveMenu(mePtr->childMenuRefPtr->menuPtr); } } } @@ -1256,8 +1347,10 @@ void TkMacOSXClearMenubarActive(void) { NSMenu *mainMenu = [NSApp mainMenu]; + if (mainMenu && [mainMenu isKindOfClass:[TKMenu class]]) { - TkMenu *menuPtr = [(TKMenu *)mainMenu tkMenu]; + TkMenu *menuPtr = [(TKMenu *) mainMenu tkMenu]; + if (menuPtr && menuPtr->numEntries && menuPtr->entries) { RecursivelyClearActiveMenu(menuPtr); } @@ -1310,7 +1403,9 @@ TkpMenuInit(void) TkColor *tkColPtr; NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; -#define observe(n, s) [nc addObserver:NSApp selector:@selector(s) name:(n) object:nil] + +#define observe(n, s) \ + [nc addObserver:NSApp selector:@selector(s) name:(n) object:nil] observe(NSMenuDidBeginTrackingNotification, menuBeginTracking:); observe(NSMenuDidEndTrackingNotification, menuEndTracking:); #undef observe @@ -1476,9 +1571,9 @@ TkpDrawMenuEntry( int width, /* Width of the entry rectangle */ int height, /* Height of the current rectangle */ int strictMotif, /* Boolean flag */ - int drawArrow) /* Whether or not to draw the cascade - * arrow for cascade items. Only applies - * to Windows. */ + int drawArrow) /* Whether or not to draw the cascade arrow + * for cascade items. Only applies to + * Windows. */ { } @@ -1630,7 +1725,7 @@ TkMacOSXMenuClick(void) /* * Local Variables: - * mode: c + * mode: objc * c-basic-offset: 4 * fill-column: 79 * coding: utf-8 |