diff options
Diffstat (limited to 'Modules/_tkinter.c')
-rw-r--r-- | Modules/_tkinter.c | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index c3d1b61..ec62b93 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -59,10 +59,19 @@ PERFORMANCE OF THIS SOFTWARE. #define TKMAJORMINOR (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) +#if TKMAJORMINOR >= 8000 && defined(macintosh) +/* Sigh, we have to include this to get at the tcl qd pointer */ +#include <tkMac.h> +#endif + #if TKMAJORMINOR < 4001 #error "Tk 4.0 or 3.x are not supported -- use 4.1 or higher" #endif +#if TKMAJORMINOR < 8000 || !defined(MS_WINDOWS) && !defined(macintosh) +#define HAVE_CREATEFILEHANDLER +#endif + extern int Tk_GetNumMainWindows(); #ifdef macintosh @@ -78,7 +87,11 @@ extern int Tk_GetNumMainWindows(); #include <Events.h> /* For EventRecord */ typedef int (*TclMacConvertEventPtr) Py_PROTO((EventRecord *eventPtr)); -void TclMacSetEventProc Py_PROTO((TclMacConvertEventPtr procPtr)); +/* They changed the name... */ +#if TKMAJORMINOR < 8000 +#define Tcl_MacSetEventProc TclMacSetEventProc +#endif +void Tcl_MacSetEventProc Py_PROTO((TclMacConvertEventPtr procPtr)); int TkMacConvertEvent Py_PROTO((EventRecord *eventPtr)); staticforward int PyMacConvertEvent Py_PROTO((EventRecord *eventPtr)); @@ -985,7 +998,7 @@ GetFileNo(file) static PyObject* Tkapp_ClientDataDict = NULL; -#ifndef WIN32 +#ifdef HAVE_CREATEFILEHANDLER static PyObject * Tkapp_CreateFileHandler(self, args) PyObject *self; @@ -1089,7 +1102,7 @@ Tkapp_DeleteFileHandler(self, args) Py_INCREF(Py_None); return Py_None; } -#endif /* WIN32 */ +#endif /* HAVE_CREATEFILEHANDLER */ /**** Tktt Object (timer token) ****/ @@ -1104,6 +1117,8 @@ typedef struct } TkttObject; +/* XXXX For now... */ +#if TKMAJORMINOR < 8000 || !defined(macintosh) static PyObject * Tktt_DeleteTimerHandler(self, args) PyObject *self; @@ -1210,6 +1225,7 @@ TimerHandler(clientData) else Py_DECREF(res); } +#endif /* macintosh */ static PyObject * Tkapp_CreateTimerHandler(self, args) @@ -1340,7 +1356,7 @@ static PyMethodDef Tkapp_methods[] = {"merge", Tkapp_Merge, 0}, {"createcommand", Tkapp_CreateCommand, 1}, {"deletecommand", Tkapp_DeleteCommand, 1}, -#ifndef WIN32 +#ifdef HAVE_CREATEFILEHANDLER {"createfilehandler", Tkapp_CreateFileHandler, 1}, {"deletefilehandler", Tkapp_DeleteFileHandler, 1}, #endif @@ -1423,7 +1439,7 @@ Tkinter_Create(self, args) static PyMethodDef moduleMethods[] = { {"create", Tkinter_Create, 1}, -#ifndef WIN32 +#ifdef HAVE_CREATEFILEHANDLER {"createfilehandler", Tkapp_CreateFileHandler, 1}, {"deletefilehandler", Tkapp_DeleteFileHandler, 1}, #endif @@ -1505,15 +1521,22 @@ init_tkinter() ins_string(d, "TK_VERSION", TK_VERSION); ins_string(d, "TCL_VERSION", TCL_VERSION); -#ifndef WIN32 if (PyOS_InputHook == NULL) PyOS_InputHook = EventHook; -#endif if (PyErr_Occurred()) Py_FatalError("can't initialize module _tkinter"); #ifdef macintosh - TclMacSetEventProc(PyMacConvertEvent); + /* + ** Part of this code is stolen from MacintoshInit in tkMacAppInit. + ** Most of the initializations in that routine (toolbox init calls and + ** such) have already been done for us, so we only need these. + */ +#if TKMAJORMINOR >= 8000 + tcl_macQdPtr = &qd; +#endif + + Tcl_MacSetEventProc(PyMacConvertEvent); #if GENERATINGCFM mac_addlibresources(); #endif /* GENERATINGCFM */ @@ -1556,7 +1579,7 @@ PyMacConvertEvent(eventPtr) return TkMacConvertEvent(eventPtr); } -#ifdef USE_GUSI +#if defined(USE_GUSI) && TKMAJORMINOR < 8000 /* * For Python we have to override this routine (from TclMacNotify), * since we use GUSI for our sockets, not Tcl streams. Hence, we have |