From: Guido van Rossum Date: Tue, 28 Apr 1998 16:12:43 +0000 (+0000) Subject: On the Mac a call to TkMacInitMenus is needed. Also, we pass X-Git-Tag: v1.5.2a1~788 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2ea1c94b9acf0300b83e6efd1363f0f82b434a8b;p=python On the Mac a call to TkMacInitMenus is needed. Also, we pass appropriate events to Sioux so the console window remains functional. (Jack) --- diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 8def1efe0e..b8c59a8f75 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -62,6 +62,8 @@ PERFORMANCE OF THIS SOFTWARE. #if TKMAJORMINOR >= 8000 && defined(macintosh) /* Sigh, we have to include this to get at the tcl qd pointer */ #include +/* And this one we need to clear the menu bar */ +#include #endif #if TKMAJORMINOR < 4001 @@ -96,6 +98,16 @@ int TkMacConvertEvent Py_PROTO((EventRecord *eventPtr)); staticforward int PyMacConvertEvent Py_PROTO((EventRecord *eventPtr)); +#if defined(__CFM68K__) && !defined(__USING_STATIC_LIBS__) + #pragma import on +#endif + +#include +extern int SIOUXIsAppWindow(WindowPtr); + +#if defined(__CFM68K__) && !defined(__USING_STATIC_LIBS__) + #pragma import reset +#endif #endif /* macintosh */ #ifndef FREECAST @@ -337,6 +349,11 @@ Tkapp_New(screenName, baseName, className, interactive) v->interp = Tcl_CreateInterp(); +#if defined(macintosh) && TKMAJORMINOR >= 8000 + /* This seems to be needed since Tk 8.0 */ + ClearMenuBar(); + TkMacInitMenus(v->interp); +#endif /* Delete the 'exit' command, which can screw things up */ Tcl_DeleteCommand(v->interp, "exit"); @@ -1600,8 +1617,20 @@ static int PyMacConvertEvent(eventPtr) EventRecord *eventPtr; { - if (SIOUXHandleOneEvent(eventPtr)) - return 0; /* Nothing happened to the Tcl event queue */ + WindowPtr frontwin; + /* + ** Sioux eats too many events, so we don't pass it everything. + ** We always pass update events to Sioux, and we only pass other events if + ** the Sioux window is frontmost. This means that Tk menus don't work + ** in that case, but at least we can scroll the sioux window. + ** Note that the SIOUXIsAppWindow() routine we use here is not really + ** part of the external interface of Sioux... + */ + frontwin = FrontWindow(); + if ( eventPtr->what == updateEvt || SIOUXIsAppWindow(frontwin) ) { + if (SIOUXHandleOneEvent(eventPtr)) + return 0; /* Nothing happened to the Tcl event queue */ + } return TkMacConvertEvent(eventPtr); }