From d09c2dc8fe0cc3d0e4252a6564c884880efabc65 Mon Sep 17 00:00:00 2001 From: wolfsuit Date: Thu, 1 Apr 2004 18:40:09 +0000 Subject: Fix for Bug 220871. --- ChangeLog | 5 +++++ macosx/tkMacOSXMenu.c | 26 ++++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 436f7f3..27b621e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-03-31 Jim Ingham + + * tkMacOSXMenu.c (EventuallyInvokeMenu): Report errors from invoking + menu commands as background errors. [Bug 220871] + 2004-03-26 Donal K. Fellows * generic/tkImgPPM.c (ReadPPMStringHeader): Code to read PPM/PGM data diff --git a/macosx/tkMacOSXMenu.c b/macosx/tkMacOSXMenu.c index 5ae94a7..8c95a32 100644 --- a/macosx/tkMacOSXMenu.c +++ b/macosx/tkMacOSXMenu.c @@ -9,7 +9,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.6.2.4 2004/02/16 00:42:34 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXMenu.c,v 1.6.2.5 2004/04/01 18:40:10 wolfsuit Exp $ */ #include "tkMacOSXInt.h" #include "tkMenuButton.h" @@ -141,9 +141,6 @@ typedef struct TopLevelMenubarList { #define CASCADE_CMD (0x1b) /* The special command char for cascade * menus. */ -#define SEPARATOR_TEXT "\p(-" - /* The text for a menu separator. */ - #define MENUBAR_REDRAW_PENDING 1 #define SCREEN_MARGIN 5 @@ -1079,7 +1076,9 @@ ReconfigureIndividualMenu( */ if (mePtr->type == SEPARATOR_ENTRY) { - AppendMenu(macMenuHdl, SEPARATOR_TEXT); + AppendMenuItemTextWithCFString (macMenuHdl, NULL, + kMenuItemAttrSeparator | kMenuItemAttrDisabled, + 0, NULL); } else { Tcl_DString itemTextDString; int destWrote; @@ -1087,13 +1086,12 @@ ReconfigureIndividualMenu( GetEntryText(mePtr, &itemTextDString); cf = CFStringCreateWithCString(NULL, Tcl_DStringValue(&itemTextDString), kCFStringEncodingUTF8); - AppendMenu(macMenuHdl, "\px"); if (cf != NULL) { - SetMenuItemTextWithCFString(macMenuHdl, base + index, cf); + AppendMenuItemTextWithCFString (macMenuHdl, cf, 0, 0, NULL); CFRelease(cf); } else { cf = CFSTR (""); - SetMenuItemTextWithCFString(macMenuHdl, base + index, cf); + AppendMenuItemTextWithCFString (macMenuHdl, cf, 0, 0, NULL); } Tcl_DStringFree(&itemTextDString); @@ -2099,11 +2097,19 @@ EventuallyInvokeMenu (ClientData data) { struct MenuCommandHandlerData *realData = (struct MenuCommandHandlerData *) data; + int code; + code = TkInvokeMenu(realData->menuPtr->interp, realData->menuPtr, + realData->index); + + if (code != TCL_OK && code != TCL_CONTINUE + && code != TCL_BREAK) { + Tcl_AddErrorInfo(realData->menuPtr->interp, "\n (menu invoke)"); + Tcl_BackgroundError(realData->menuPtr->interp); + } + Tcl_Release(realData->menuPtr->interp); Tcl_Release(realData->menuPtr); - TkInvokeMenu(realData->menuPtr->interp, realData->menuPtr, - realData->index); } /* -- cgit v0.12