diff options
author | Guido van Rossum <guido@python.org> | 1998-04-28 16:12:43 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-04-28 16:12:43 (GMT) |
commit | 2ea1c94b9acf0300b83e6efd1363f0f82b434a8b (patch) | |
tree | 8a19f41e85c2c8f85eec837be8718dd47fdcdf30 | |
parent | 19efc5fb803384043c39e6341fb20a8cea11c3a3 (diff) | |
download | cpython-2ea1c94b9acf0300b83e6efd1363f0f82b434a8b.zip cpython-2ea1c94b9acf0300b83e6efd1363f0f82b434a8b.tar.gz cpython-2ea1c94b9acf0300b83e6efd1363f0f82b434a8b.tar.bz2 |
On the Mac a call to TkMacInitMenus is needed. Also, we pass
appropriate events to Sioux so the console window remains functional.
(Jack)
-rw-r--r-- | Modules/_tkinter.c | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 8def1ef..b8c59a8 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 <tkMac.h> +/* And this one we need to clear the menu bar */ +#include <Menus.h> #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 <SIOUX.h> +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); } |