summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--macosx/tkMacOSXMenu.c26
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 <jingham@apple.com>
+
+ * tkMacOSXMenu.c (EventuallyInvokeMenu): Report errors from invoking
+ menu commands as background errors. [Bug 220871]
+
2004-03-26 Donal K. Fellows <donal.k.fellows@man.ac.uk>
* 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 ("<Error>");
- 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);
}
/*