X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f775771ab47cb5528f2a82389c170fc9bd467d27..6086bcc8ba1d46f5079bf40a61c8411e4b66fe9f:/src/common/init.cpp diff --git a/src/common/init.cpp b/src/common/init.cpp index 5154c1afd7..7af0af2157 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -34,7 +34,7 @@ #include "wx/init.h" #include "wx/thread.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/except.h" #if defined(__WXMSW__) && defined(__WXDEBUG__) @@ -63,8 +63,9 @@ public: wxDummyConsoleApp() { } virtual int OnRun() { wxFAIL_MSG( _T("unreachable code") ); return 0; } + virtual bool DoYield(bool, long) { return true; } - DECLARE_NO_COPY_CLASS(wxDummyConsoleApp) + wxDECLARE_NO_COPY_CLASS(wxDummyConsoleApp); }; // we need a special kind of auto pointer to wxApp which not only deletes the @@ -93,7 +94,7 @@ public: wxApp::SetInstance(ptr); } - DECLARE_NO_COPY_CLASS(wxAppPtr) + wxDECLARE_NO_COPY_CLASS(wxAppPtr); }; // class to ensure that wxAppBase::CleanUp() is called if our Initialize() @@ -160,7 +161,7 @@ static struct InitData wchar_t **argv; #endif // wxUSE_UNICODE - DECLARE_NO_COPY_CLASS(InitData) + wxDECLARE_NO_COPY_CLASS(InitData); } gs_initData; // ============================================================================ @@ -255,28 +256,35 @@ static bool DoCommonPostInit() // the executable currently running, which are not necessarily all // wxWidgets event classes. const wxClassInfo *ci = wxClassInfo::GetFirst(); - while (ci) + for (; ci; ci = ci->GetNext()) { // is this class derived from wxEvent? - if (ci->IsKindOf(CLASSINFO(wxEvent)) && wxString(ci->GetClassName()) != "wxEvent") - { - if (!ci->IsDynamic()) - wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!", - ci->GetClassName()); - - // yes; test if it implements Clone() correctly - wxEvent* test = dynamic_cast(ci->CreateObject()); - wxASSERT_MSG(test, "The event class should have a DECLARE_DYNAMIC_CLASS macro!"); + if (!ci->IsKindOf(CLASSINFO(wxEvent)) || wxString(ci->GetClassName()) == "wxEvent") + continue; - wxEvent* cloned = test->Clone(); - if (!cloned || cloned->GetClassInfo() != ci) - wxLogWarning("The event class '%s' does not correctly implements wxEvent::Clone()!", - ci->GetClassName()); + if (!ci->IsDynamic()) + { + wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!", + ci->GetClassName()); + continue; + } - delete test; + // yes; test if it implements Clone() correctly + wxEvent* test = wxDynamicCast(ci->CreateObject(),wxEvent); + if (test == NULL) + { + wxLogWarning("The event class '%s' should have a DECLARE_DYNAMIC_CLASS macro!", + ci->GetClassName()); + continue; } - ci = ci->GetNext(); + wxEvent* cloned = test->Clone(); + if (!cloned || cloned->GetClassInfo() != ci) + wxLogWarning("The event class '%s' does not correctly implement Clone()!", + ci->GetClassName()); + + delete cloned; + delete test; } #endif @@ -290,9 +298,7 @@ bool wxEntryStart(int& argc, wxChar **argv) // initialize wxRTTI if ( !DoCommonPreInit() ) - { return false; - } // first of all, we need an application object @@ -325,22 +331,15 @@ bool wxEntryStart(int& argc, wxChar **argv) // -------------------------------------------- if ( !app->Initialize(argc, argv) ) - { return false; - } // remember, possibly modified (e.g. due to removal of toolkit-specific // parameters), command line arguments in member variables app->argc = argc; app->argv = argv; - wxCallAppCleanup callAppCleanup(app.get()); - // for compatibility call the old initialization function too - if ( !app->OnInitGui() ) - return false; - // common initialization after wxTheApp creation // --------------------------------------------- @@ -476,7 +475,6 @@ int wxEntryReal(int& argc, wxChar **argv) wxTRY { - // app initialization if ( !wxTheApp->CallOnInit() ) {