]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added HandleEvent method to macos, so python programs can hand back
authorJack Jansen <jack.jansen@cwi.nl>
Thu, 2 Feb 1995 14:25:56 +0000 (14:25 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Thu, 2 Feb 1995 14:25:56 +0000 (14:25 +0000)
events they don't want to handle to stdio

Mac/Include/macglue.h
Mac/Modules/macosmodule.c
Mac/Python/macglue.c

index b61a78e920c12c2eb6bae6b87e6817a79bb81a89..7944471972902b02d6045978b68ae4a796ef3369 100644 (file)
@@ -37,7 +37,8 @@ int PyMac_Idle Py_PROTO((void));                      /* Idle routine */
 void PyMac_Yield Py_PROTO((void));                     /* optional idle routine for mainloop */
 void PyMac_SetYield Py_PROTO((long, long, long, long));        /* Set timeouts */
 PyObject *PyErr_Mac(PyObject *, int);          /* Exception with a mac error */
-PyObject *PyMac_Error(OSErr);                  /* Uses PyMac_GetOSErrException */ 
+PyObject *PyMac_Error(OSErr);                  /* Uses PyMac_GetOSErrException */
+void PyMac_HandleEvent Py_PROTO((EventRecord *));      /* Handle one event, if possible */
 
 int PyMac_Idle(void);                          /* Idle routine */
 
index 2b98fc61d24d4791b81e3d3d9b018acfda522a84..ceb8a9620da1046983b5163a7f41f2c608b19fb5 100644 (file)
@@ -202,6 +202,19 @@ MacOS_EnableAppswitch(PyObject *self, PyObject *args)
        return Py_None;
 }
 
+
+static PyObject *
+MacOS_HandleEvent(PyObject *self, PyObject *args)
+{
+       EventRecord ev;
+       
+       if (!PyArg_ParseTuple(args, "O&", PyMac_GetEventRecord, &ev))
+               return NULL;
+       PyMac_HandleEvent(&ev);
+       Py_INCREF(Py_None);
+       return Py_None;
+}
+
 static PyMethodDef MacOS_Methods[] = {
        {"AcceptHighLevelEvent",        MacOS_AcceptHighLevelEvent, 1},
        {"GetCreatorAndType",           MacOS_GetCreatorAndType, 1},
@@ -211,6 +224,7 @@ static PyMethodDef MacOS_Methods[] = {
 #endif
        {"SetScheduleTimes",    MacOS_SetScheduleTimes, 1},
        {"EnableAppswitch",             MacOS_EnableAppswitch, 1},
+       {"HandleEvent",                 MacOS_HandleEvent, 1},
        {NULL,                          NULL}            /* Sentinel */
 };
 
index a99023b433d376dacce59a1c14ff833751fa689d..98a5c7b2d949c2e2e6f3e0d088708d053c1f3360 100644 (file)
@@ -266,6 +266,28 @@ PyMac_SetYield(long fgi, long fgy, long bgi, long bgy)
        yield_bg = bgy;
 }
 
+/*
+** Handle an event, either one found in the mainloop eventhandler or
+** one passed back from the python program.
+*/
+void
+PyMac_HandleEvent(evp)
+       EventRecord *evp;
+{
+       WindowPtr wp;
+                       
+#ifdef __MWERKS__
+       /* If SIOUX wants it we're done */
+       (void)SIOUXHandleOneEvent(evp);
+#else
+       /* Other compilers are just unlucky: we only weed out clicks in other applications */
+       if ( evp->what == mouseDown ) {
+               if ( FindWindow(evp->where, &wp) == inSysWindow )
+                       SystemClick(evp, wp);
+       }
+#endif /* !__MWERKS__ */
+}
+
 /*
 ** Yield the CPU to other tasks.
 */
@@ -273,7 +295,6 @@ static
 PyMac_DoYield()
 {
        EventRecord ev;
-       WindowPtr wp;
        long yield;
        static int no_waitnextevent = -1;
        int gotone;
@@ -306,17 +327,7 @@ PyMac_DoYield()
                /* Get out quickly if nothing interesting is happening */
                if ( !gotone || ev.what == nullEvent )
                        break;
-                       
-#ifdef __MWERKS__
-               /* If SIOUX wants it we're done too */
-               (void)SIOUXHandleOneEvent(&ev);
-#else
-               /* Other compilers are just unlucky: we only weed out clicks in other applications */
-               if ( ev.what == mouseDown ) {
-                       if ( FindWindow(ev.where, &wp) == inSysWindow )
-                               SystemClick(&ev, wp);
-               }
-#endif /* !__MWERKS__ */
+               PyMac_HandleEvent(&ev);
        }
        lastyield = TickCount();
 }