Changes needed to solve wxPython's OOR problem for the wxOGL shapes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-11-27 02:56:59 +00:00
parent 220f2d5c4d
commit 2f4e928794
33 changed files with 504 additions and 97 deletions

View File

@@ -117,7 +117,7 @@ wxList* wxPy_wxListHelper(PyObject* pyList, char* className) {
char errmsg[1024];
sprintf(errmsg, "Type error, expected list of %s objects", className);
PyErr_SetString(PyExc_TypeError, errmsg);
wxPyEndBlockThreads(state);
wxPyEndBlockThreads(state);
return NULL;
}
list->Append(wxo);
@@ -168,6 +168,31 @@ wxList* wxPy_wxRealPoint_ListHelper(PyObject* pyList) {
return list;
}
//---------------------------------------------------------------------------
PyObject* wxPyMake_wxShapeEvtHandler(wxShapeEvtHandler* source) {
PyObject* target = NULL;
if (source && wxIsKindOf(source, wxShapeEvtHandler)) {
// If it's derived from wxShapeEvtHandler then there may
// already be a pointer to a Python object that we can use
// in the OOR data.
wxShapeEvtHandler* seh = (wxShapeEvtHandler*)source;
wxPyClientData* data = (wxPyClientData*)seh->GetClientObject();
if (data) {
target = data->m_obj;
Py_INCREF(target);
}
}
if (! target) {
target = wxPyMake_wxObject2(source, FALSE);
if (target != Py_None)
((wxShapeEvtHandler*)source)->SetClientObject(new wxPyClientData(target));
}
return target;
}
//---------------------------------------------------------------------------