summaryrefslogtreecommitdiff
path: root/src/python.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-06 19:01:49 +0000
committerDana Jansens <danakj@orodu.net>2003-01-06 19:01:49 +0000
commit40449e199dfeab57e8d147e07989aef339a7da59 (patch)
treed33c1d377460dc5f080cb43326524903f717030b /src/python.cc
parent1f8b8425ae82c2c086f6648b7608b37685997634 (diff)
allow to bind multiple functions to everything
Diffstat (limited to 'src/python.cc')
-rw-r--r--src/python.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/python.cc b/src/python.cc
index 60c3e012..c463fdc8 100644
--- a/src/python.cc
+++ b/src/python.cc
@@ -496,13 +496,17 @@ PyObject *kbind(PyObject *keylist, ob::KeyContext context, PyObject *func)
Py_INCREF(Py_None); return Py_None;
}
-PyObject *kunbind(PyObject *keylist)
+PyObject *kunbind(PyObject *keylist, PyObject *func)
{
if (!PyList_Check(keylist)) {
PyErr_SetString(PyExc_TypeError, "Invalid keylist. Not a list.");
return NULL;
}
-
+ if (!PyCallable_Check(func)) {
+ PyErr_SetString(PyExc_TypeError, "Invalid callback function.");
+ return NULL;
+ }
+
ob::OBBindings::StringVect vectkeylist;
for (int i = 0, end = PyList_Size(keylist); i < end; ++i) {
PyObject *str = PyList_GetItem(keylist, i);
@@ -514,7 +518,10 @@ PyObject *kunbind(PyObject *keylist)
vectkeylist.push_back(PyString_AsString(str));
}
- ob::Openbox::instance->bindings()->removeKey(vectkeylist);
+ if (!ob::Openbox::instance->bindings()->removeKey(vectkeylist, func)) {
+ PyErr_SetString(PyExc_RuntimeError, "Could not remove callback.");
+ return NULL;
+ }
Py_INCREF(Py_None); return Py_None;
}