Mercurial > cpython-lru_cache-weakref
diff Modules/_tkinter.c @ 21322:1852caba7014 legacy-trunk
Mods by Tony Lownds (patch 490100, slightly massaged by me) to make Tkinter
work with Mac OS X Aqua-Tk, all nicely within ifdefs.
The process is not for the faint of heart, though: you need to download
and install the (alfa) Aqua-Tk, obtain a few needed X11 headers from
somewhere else and then everything builds. To run scripts using Tkinter
you must build with --enable-framework, build Python.app in Mac/OSX
and run your Tkinter scripts with that. Then, about half the tests in
Demo/tkinter work (or at least do something).
Checking this in anyway because it shouldn't break anything, and newer
versions of Aqua-Tk will streamline the process.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Sun, 09 Dec 2001 23:15:56 +0000 |
| parents | 304b34023876 |
| children | 7ba2a8c162fa 40631ae74b17 |
line wrap: on
line diff
--- a/Modules/_tkinter.c Sun Dec 09 23:08:54 2001 +0000 +++ b/Modules/_tkinter.c Sun Dec 09 23:15:56 2001 +0000 @@ -41,8 +41,13 @@ #define MAC_TCL #endif +#ifdef TK_FRAMEWORK +#include <Tcl/tcl.h> +#include <Tk/tk.h> +#else #include <tcl.h> #include <tk.h> +#endif #define TKMAJORMINOR (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) @@ -454,6 +459,7 @@ ClearMenuBar(); TkMacInitMenus(v->interp); #endif + /* Delete the 'exit' command, which can screw things up */ Tcl_DeleteCommand(v->interp, "exit"); @@ -1580,7 +1586,7 @@ char buf[100]; PyOS_snprintf(buf, sizeof(buf), "<tktimertoken at %p%s>", v, - v->func == NULL ? ", handler deleted" : ""); + v->func == NULL ? ", handler deleted" : ""); return PyString_FromString(buf); } @@ -2137,6 +2143,22 @@ Tktt_Type.ob_type = &PyType_Type; PyDict_SetItemString(d, "TkttType", (PyObject *)&Tktt_Type); + +#ifdef TK_AQUA + /* Tk_MacOSXSetupTkNotifier must be called before Tcl's subsystems + * start waking up. Note that Tcl_FindExecutable will do this, this + * code must be above it! The original warning from + * tkMacOSXAppInit.c is copied below. + * + * NB - You have to swap in the Tk Notifier BEFORE you start up the + * Tcl interpreter for now. It probably should work to do this + * in the other order, but for now it doesn't seem to. + * + */ + Tk_MacOSXSetupTkNotifier(); +#endif + + /* This helps the dynamic loader; in Unicode aware Tcl versions it also helps Tcl find its encodings. */ Tcl_FindExecutable(Py_GetProgramName());
