X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e19b71646053a07255b308b24321837f8ea76176..85bc0351f76f6d3f00460a167fc108b900e0725c:/utils/wxPython/src/helpers.cpp diff --git a/utils/wxPython/src/helpers.cpp b/utils/wxPython/src/helpers.cpp index 2d0466944a..a512d7c07c 100644 --- a/utils/wxPython/src/helpers.cpp +++ b/utils/wxPython/src/helpers.cpp @@ -10,14 +10,12 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// - -#ifdef __WXGTK__ -#include -#endif +#include // get the correct definition of NULL #undef DEBUG #include #include "helpers.h" + #ifdef __WXMSW__ #include #undef FindWindow @@ -26,7 +24,15 @@ #undef GetClassInfo #undef GetClassName #endif -#include + +#ifdef __WXGTK__ +#include +#include +#include +//#include +//#include +//#include +#endif //--------------------------------------------------------------------------- @@ -74,7 +80,7 @@ wxPyApp::~wxPyApp() { // This one isn't acutally called... See __wxStart() bool wxPyApp::OnInit(void) { - return false; + return FALSE; } int wxPyApp::MainLoop(void) { @@ -207,7 +213,7 @@ PyObject* __wxStart(PyObject* /* self */, PyObject* args) } bResult = PyInt_AS_LONG(result); if (! bResult) { - PyErr_SetString(PyExc_SystemExit, "OnInit returned false, exiting..."); + PyErr_SetString(PyExc_SystemExit, "OnInit returned FALSE, exiting..."); return NULL; } @@ -382,12 +388,14 @@ void wxPyCallback::EventThunker(wxEvent& event) { wxPyCallbackHelper::wxPyCallbackHelper() { m_self = NULL; m_lastFound = NULL; + m_incRef = FALSE; } wxPyCallbackHelper::~wxPyCallbackHelper() { bool doSave = wxPyRestoreThread(); - Py_XDECREF(m_self); + if (m_incRef) + Py_XDECREF(m_self); wxPySaveThread(doSave); } @@ -401,6 +409,7 @@ wxPyCallbackHelper::wxPyCallbackHelper(const wxPyCallbackHelper& other) { void wxPyCallbackHelper::setSelf(PyObject* self, int incref) { m_self = self; + m_incRef = incref; if (incref) Py_INCREF(m_self); } @@ -453,7 +462,7 @@ PyObject* wxPyCallbackHelper::callCallbackObj(PyObject* argTuple) { wxPyEvtSelfRef::wxPyEvtSelfRef() { //m_self = Py_None; // **** We don't do normal ref counting to prevent //Py_INCREF(m_self); // circular loops... - m_cloned = false; + m_cloned = FALSE; } wxPyEvtSelfRef::~wxPyEvtSelfRef() { @@ -571,6 +580,25 @@ PyObject* wxPy_ConvertList(wxListBase* list, const char* className) { return pyList; } +//---------------------------------------------------------------------- + +long wxPyGetWinHandle(wxWindow* win) { +#ifdef __WXMSW__ + return (long)win->GetHandle(); +#endif + + // Find and return the actual X-Window. +#ifdef __WXGTK__ + if (win->m_wxwindow) { + GdkWindowPrivate* bwin = (GdkWindowPrivate*)GTK_PIZZA(win->m_wxwindow)->bin_window; + if (bwin) { + return (long)bwin->xwindow; + } + } +#endif + return 0; +} + //---------------------------------------------------------------------- // Some helper functions for typemaps in my_typemaps.i, so they won't be // included in every file...