X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/debe38c93368f632c8b62b98112a41a1de71f73e..f6342fb5e6524edffa219d5843536ea279bba4df:/wxPython/src/helpers.cpp diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index 5497d2f5b1..3e7a8e9c9c 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -297,6 +297,17 @@ void wxPyApp::MacOpenFile(const wxString &fileName) wxPyEndBlockThreads(blocked); } +void wxPyApp::MacOpenURL(const wxString &url) +{ + wxPyBlock_t blocked = wxPyBeginBlockThreads(); + if (wxPyCBH_findCallback(m_myInst, "MacOpenURL")) { + PyObject* s = wx2PyString(url); + wxPyCBH_callCallback(m_myInst, Py_BuildValue("(O)", s)); + Py_DECREF(s); + } + wxPyEndBlockThreads(blocked); +} + void wxPyApp::MacPrintFile(const wxString &fileName) { wxPyBlock_t blocked = wxPyBeginBlockThreads(); @@ -1260,7 +1271,7 @@ wxPyCBInputStream::wxPyCBInputStream(const wxPyCBInputStream& other) wxPyCBInputStream::~wxPyCBInputStream() { - wxPyBlock_t blocked; + wxPyBlock_t blocked = wxPyBlock_t_default; if (m_block) blocked = wxPyBeginBlockThreads(); Py_XDECREF(m_read); Py_XDECREF(m_seek); @@ -1270,7 +1281,7 @@ wxPyCBInputStream::~wxPyCBInputStream() { wxPyCBInputStream* wxPyCBInputStream::create(PyObject *py, bool block) { - wxPyBlock_t blocked; + wxPyBlock_t blocked = wxPyBlock_t_default; if (block) blocked = wxPyBeginBlockThreads(); PyObject* read = getMethod(py, "read"); @@ -1724,7 +1735,7 @@ PyObject* wxPyCBH_callCallbackObj(const wxPyCallbackHelper& cbh, PyObject* argTu void wxPyCBH_delete(wxPyCallbackHelper* cbh) { - if (cbh->m_incRef) { + if (cbh->m_incRef && Py_IsInitialized()) { wxPyBlock_t blocked = wxPyBeginBlockThreads(); Py_XDECREF(cbh->m_self); Py_XDECREF(cbh->m_class); @@ -1873,8 +1884,7 @@ wxString* wxString_in_helper(PyObject* source) { target = new wxString(); size_t len = PyUnicode_GET_SIZE(uni); if (len) { - PyUnicode_AsWideChar((PyUnicodeObject*)uni, target->GetWriteBuf(len), len); - target->UngetWriteBuf(len); + PyUnicode_AsWideChar((PyUnicodeObject*)uni, wxStringBuffer(*target, len), len); } if (PyString_Check(source)) @@ -1916,8 +1926,7 @@ wxString Py2wxString(PyObject* source) } size_t len = PyUnicode_GET_SIZE(uni); if (len) { - PyUnicode_AsWideChar((PyUnicodeObject*)uni, target.GetWriteBuf(len), len); - target.UngetWriteBuf(); + PyUnicode_AsWideChar((PyUnicodeObject*)uni, wxStringBuffer(target, len), len); } if (!PyUnicode_Check(source)) @@ -2526,6 +2535,17 @@ bool wxPoint_helper(PyObject* source, wxPoint** obj) +bool wxPosition_helper(PyObject* source, wxPosition** obj) +{ + if (source == Py_None) { + **obj = wxPosition(-1,-1); + return true; + } + return wxPyTwoIntItem_helper(source, obj, wxT("wxPosition")); +} + + + bool wxRealPoint_helper(PyObject* source, wxRealPoint** obj) { if (source == Py_None) {