summaryrefslogtreecommitdiffstats
path: root/Mac/Modules
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1997-06-20 16:19:38 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1997-06-20 16:19:38 (GMT)
commit883765eb71e1cf684a71fb805cf2f87b1c9c9ccd (patch)
tree028897ac43056a75d4a7208001a0d2bae33c513a /Mac/Modules
parent3757523f1e5cc70dbd26fa6ccb8a8a0f421201a0 (diff)
downloadcpython-883765eb71e1cf684a71fb805cf2f87b1c9c9ccd.zip
cpython-883765eb71e1cf684a71fb805cf2f87b1c9c9ccd.tar.gz
cpython-883765eb71e1cf684a71fb805cf2f87b1c9c9ccd.tar.bz2
added SetEventHandler
Diffstat (limited to 'Mac/Modules')
-rw-r--r--Mac/Modules/macosmodule.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/Mac/Modules/macosmodule.c b/Mac/Modules/macosmodule.c
index 6dd6de4..dc16243 100644
--- a/Mac/Modules/macosmodule.c
+++ b/Mac/Modules/macosmodule.c
@@ -499,27 +499,39 @@ MacOS_EnableAppswitch(PyObject *self, PyObject *args)
return Py_BuildValue("i", old);
}
+static char setevh_doc[] = "Set python event handler to be called in mainloop";
+
+static PyObject *
+MacOS_SetEventHandler(self, args)
+ PyObject *self;
+ PyObject *args;
+{
+ PyObject *evh = NULL;
+
+ if (!PyArg_ParseTuple(args, "|O", &evh))
+ return NULL;
+ if (evh == Py_None)
+ evh = NULL;
+ if ( evh && !PyCallable_Check(evh) ) {
+ PyErr_SetString(PyExc_ValueError, "SetEventHandler argument must be callable");
+ return NULL;
+ }
+ if ( !PyMac_SetEventHandler(evh) )
+ return NULL;
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
static char handleev_doc[] = "Pass event to other interested parties like sioux";
static PyObject *
MacOS_HandleEvent(PyObject *self, PyObject *args)
{
EventRecord ev;
- static int inhere;
- /*
- ** With HandleEvent and SetEventHandler we have a chance of recursive
- ** calls. We check that here (for lack of a better place)
- */
- if ( inhere ) {
- PyErr_SetString(PyExc_RuntimeError, "Recursive call to MacOS.HandleEvent");
- return NULL;
- }
if (!PyArg_ParseTuple(args, "O&", PyMac_GetEventRecord, &ev))
return NULL;
- inhere = 1;
- PyMac_HandleEvent(&ev, 1);
- inhere = 0;
+ PyMac_HandleEventIntern(&ev);
Py_INCREF(Py_None);
return Py_None;
}
@@ -658,6 +670,7 @@ static PyMethodDef MacOS_Methods[] = {
#endif
{"SchedParams", MacOS_SchedParams, 1, schedparams_doc},
{"EnableAppswitch", MacOS_EnableAppswitch, 1, appswitch_doc},
+ {"SetEventHandler", MacOS_SetEventHandler, 1, setevh_doc},
{"HandleEvent", MacOS_HandleEvent, 1, handleev_doc},
{"GetErrorString", MacOS_GetErrorString, 1, geterr_doc},
{"openrf", MacOS_openrf, 1, openrf_doc},