diff --git a/include/wx/app.h b/include/wx/app.h index 1a356a01d8..a06b1f7485 100644 --- a/include/wx/app.h +++ b/include/wx/app.h @@ -270,15 +270,18 @@ public: static wxAppInitializerFunction GetInitializerFunction() { return ms_appInitFn; } + // accessors for ms_appInstance field (external code might wish to modify + // it, this is why we provide a setter here as well, but you should really + // know what you're doing if you call it), wxTheApp is usually used instead + // of GetInstance() + static wxAppConsole *GetInstance() { return ms_appInstance; } + static void SetInstance(wxAppConsole *app) { ms_appInstance = app; } + // command line arguments (public for backwards compatibility) int argc; wxChar **argv; - // the one and only global application object (must be public for backwards - // compatibility as assigning to wxTheApp should work) - static wxAppConsole *ms_appInstance; - protected: // the function which creates the traits object when GetTraits() needs it // for the first time @@ -288,6 +291,9 @@ protected: // function used for dynamic wxApp creation static wxAppInitializerFunction ms_appInitFn; + // the one and only global application object + static wxAppConsole *ms_appInstance; + // application info (must be set from the user code) wxString m_vendorName, // vendor name (ACME Inc) @@ -534,7 +540,7 @@ protected: // // the cast is safe as in GUI build we only use wxApp, not wxAppConsole, and in // console mode it does nothing at all -#define wxTheApp ((wxApp *)wxApp::ms_appInstance) +#define wxTheApp ((wxApp *)wxApp::GetInstance()) // ---------------------------------------------------------------------------- // global functions diff --git a/src/common/init.cpp b/src/common/init.cpp index a797719db4..72c8968ed4 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -81,7 +81,7 @@ public: { // the pointer is going to be deleted in the base class dtor, don't // leave the dangling pointer! - wxTheApp = NULL; + wxApp::SetInstance(NULL); } } @@ -89,7 +89,7 @@ public: { reset(ptr); - wxTheApp = ptr; + wxApp::SetInstance(ptr); } DECLARE_NO_COPY_CLASS(wxAppPtr) @@ -356,7 +356,7 @@ void wxEntryCleanup() wxTheApp->CleanUp(); delete wxTheApp; - wxTheApp = NULL; + wxApp::SetInstance(NULL); }