X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fpython.cc;h=c463fdc824d0edca37e2465a09f9cdc31757fa64;hb=7175ac2b5aec7aface6a2f86df32dd0386e0cc05;hp=60c3e012f2b4d3929897ed3471a53fdedd77cb8b;hpb=f5f0a2c2eda2ea8cb3cd5eecbe2b7e459ae5ba2e;p=chaz%2Fopenbox 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; }