X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fe5e444a73f6d089ba152b7c429128010b961d08..d79c8ea96fad32c212b51dc6985d61337ea94055:/wxPython/src/helpers.cpp diff --git a/wxPython/src/helpers.cpp b/wxPython/src/helpers.cpp index b89e8fec50..5744f06584 100644 --- a/wxPython/src/helpers.cpp +++ b/wxPython/src/helpers.cpp @@ -378,58 +378,67 @@ void wxPyApp::SetMacHelpMenuTitleName(const wxString& val) { // that should be present in the derived (Python) class. void wxPyApp::_BootstrapApp() { - bool result; + static bool haveInitialized = false; + bool result, blocked; PyObject* retval = NULL; PyObject* pyint = NULL; - - // Get any command-line args passed to this program from the sys module - int argc = 0; - char** argv = NULL; - bool blocked = wxPyBeginBlockThreads(); - PyObject* sysargv = PySys_GetObject("argv"); - if (sysargv != NULL) { - argc = PyList_Size(sysargv); - argv = new char*[argc+1]; - int x; - for(x=0; xSetStartupComplete(True); // Call the Python wxApp's OnInit function + blocked = wxPyBeginBlockThreads(); if (wxPyCBH_findCallback(m_myInst, "OnInit")) { PyObject* method = m_myInst.GetLastFound(); @@ -519,7 +528,10 @@ void __wxPyPreStart(PyObject* moduleDict) { #ifdef __WXMSW__ -// wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF); +// wxCrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF +// | _CRTDBG_CHECK_ALWAYS_DF +// | _CRTDBG_DELAY_FREE_MEM_DF +// ); #endif #ifdef WXP_WITH_THREAD @@ -953,7 +965,7 @@ void wxPyPtrTypeMap_Add(const char* commonName, const char* ptrName) { -PyObject* wxPyMake_wxObject(wxObject* source, bool checkEvtHandler) { +PyObject* wxPyMake_wxObject(wxObject* source, bool setThisOwn, bool checkEvtHandler) { PyObject* target = NULL; bool isEvtHandler = False; @@ -986,7 +998,7 @@ PyObject* wxPyMake_wxObject(wxObject* source, bool checkEvtHandler) { exists = wxPyCheckSwigType(name); } if (info) { - target = wxPyConstructObject((void*)source, name, False); + target = wxPyConstructObject((void*)source, name, setThisOwn); if (target && isEvtHandler) ((wxEvtHandler*)source)->SetClientObject(new wxPyOORClientData(target)); } else { @@ -1003,7 +1015,7 @@ PyObject* wxPyMake_wxObject(wxObject* source, bool checkEvtHandler) { } -PyObject* wxPyMake_wxSizer(wxSizer* source) { +PyObject* wxPyMake_wxSizer(wxSizer* source, bool setThisOwn) { PyObject* target = NULL; if (source && wxIsKindOf(source, wxSizer)) { @@ -1018,7 +1030,7 @@ PyObject* wxPyMake_wxSizer(wxSizer* source) { } } if (! target) { - target = wxPyMake_wxObject(source, False); + target = wxPyMake_wxObject(source, setThisOwn, False); if (target != Py_None) ((wxSizer*)source)->SetClientObject(new wxPyOORClientData(target)); } @@ -1841,7 +1853,7 @@ PyObject* wxPy_ConvertList(wxListBase* listbase) { pyList = PyList_New(0); while (node) { wxObj = node->GetData(); - pyObj = wxPyMake_wxObject(wxObj); + pyObj = wxPyMake_wxObject(wxObj,false); PyList_Append(pyList, pyObj); node = node->GetNext(); } @@ -1890,7 +1902,7 @@ wxString* wxString_in_helper(PyObject* source) { size_t len = PyUnicode_GET_SIZE(uni); if (len) { PyUnicode_AsWideChar((PyUnicodeObject*)uni, target->GetWriteBuf(len), len); - target->UngetWriteBuf(); + target->UngetWriteBuf(len); } if (PyString_Check(source))