-#define PYCALLBACK__GCAINTINT(PCLASS, CBNAME) \
- void CBNAME(wxGridCellAttr *attr, int a, int b) { \
- bool doSave = wxPyRestoreThread(); \
- if (m_myInst.findCallback(#CBNAME)) { \
- PyObject* obj = wxPyConstructObject((void*)attr, "wxGridCellAttr");\
- m_myInst.callCallback(Py_BuildValue("(Oii)", obj, a, b)); \
- Py_DECREF(obj); \
- } \
- else \
- PCLASS::CBNAME(attr, a, b); \
- wxPySaveThread(doSave); \
- } \
- void base_##CBNAME(wxGridCellAttr *attr, int a, int b) { \
- PCLASS::CBNAME(attr, a, b); \
+#define PYCALLBACK__GCAINTINT(PCLASS, CBNAME) \
+ void CBNAME(wxGridCellAttr *attr, int a, int b) { \
+ wxPyTState* state = wxPyBeginBlockThreads(); \
+ bool found; \
+ if ((found = wxPyCBH_findCallback(m_myInst, #CBNAME))) { \
+ PyObject* obj = wxPyConstructObject((void*)attr, "wxGridCellAttr", 0);\
+ wxPyCBH_callCallback(m_myInst, Py_BuildValue("(Oii)", obj, a, b)); \
+ Py_DECREF(obj); \
+ } \
+ wxPyEndBlockThreads(state); \
+ if (! found) \
+ PCLASS::CBNAME(attr, a, b); \
+ } \
+ void base_##CBNAME(wxGridCellAttr *attr, int a, int b) { \
+ PCLASS::CBNAME(attr, a, b); \