X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b9048c56f0aa04b2adbb7813f9698abdda15184..ad3fca675f77c2903cafd096bbda8baa2e7689ff:/wxPython/contrib/ogl/_oglshapes2.i?ds=sidebyside diff --git a/wxPython/contrib/ogl/_oglshapes2.i b/wxPython/contrib/ogl/_oglshapes2.i index 15c92da329..99b00d4025 100644 --- a/wxPython/contrib/ogl/_oglshapes2.i +++ b/wxPython/contrib/ogl/_oglshapes2.i @@ -193,7 +193,27 @@ public: %extend { PyObject* GetLineControlPoints() { wxList* list = self->GetLineControlPoints(); - return wxPy_ConvertShapeList(list); + return wxPy_ConvertRealPointList(list); + } + + // part of Patch# 893337 + void SetLineControlPoints(PyObject* list) { + wxList* real_point_list = wxPy_wxRealPoint_ListHelper(list); + self->MakeLineControlPoints((int)(real_point_list->GetCount())); + wxList* old_control_points = self->GetLineControlPoints(); + wxNode* old_node = old_control_points->GetFirst(); + wxNode* real_node = real_point_list->GetFirst(); + while(old_node) + { + wxRealPoint* old_point = (wxRealPoint*)old_node->GetData(); + wxRealPoint* new_point = (wxRealPoint*)real_node->GetData(); + old_point->x = new_point->x; + old_point->y = new_point->y; + old_node = old_node->GetNext(); + real_node = real_node->GetNext(); + } + self->ClearPointList(*real_point_list); + delete real_point_list; } } @@ -282,21 +302,7 @@ public: %extend { PyObject* GetPoints() { wxList* list = self->GetPoints(); - PyObject* pyList; - PyObject* pyObj; - wxObject* wxObj; - wxNode* node = list->GetFirst(); - - wxPyBeginBlockThreads(); - pyList = PyList_New(0); - while (node) { - wxObj = node->GetData(); - pyObj = wxPyConstructObject(wxObj, wxT("wxRealPoint"), 0); - PyList_Append(pyList, pyObj); - node = node->GetNext(); - } - wxPyEndBlockThreads(); - return pyList; + return wxPy_ConvertRealPointList(list); } PyObject* GetOriginalPoints() { @@ -306,7 +312,7 @@ public: wxObject* wxObj; wxNode* node = list->GetFirst(); - wxPyBeginBlockThreads(); + bool blocked = wxPyBeginBlockThreads(); pyList = PyList_New(0); while (node) { wxObj = node->GetData(); @@ -314,7 +320,7 @@ public: PyList_Append(pyList, pyObj); node = node->GetNext(); } - wxPyEndBlockThreads(); + wxPyEndBlockThreads(blocked); return pyList; } }