wxTheApp can't be assigned to, anyhow, so make ms_appInstance private and provide Get/SetInstance() methods

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2003-08-01 23:37:40 +00:00
parent cf01e37a49
commit a80e5f9e5b
2 changed files with 14 additions and 8 deletions

View File

@ -270,15 +270,18 @@ public:
static wxAppInitializerFunction GetInitializerFunction() static wxAppInitializerFunction GetInitializerFunction()
{ return ms_appInitFn; } { 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) // command line arguments (public for backwards compatibility)
int argc; int argc;
wxChar **argv; 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: protected:
// the function which creates the traits object when GetTraits() needs it // the function which creates the traits object when GetTraits() needs it
// for the first time // for the first time
@ -288,6 +291,9 @@ protected:
// function used for dynamic wxApp creation // function used for dynamic wxApp creation
static wxAppInitializerFunction ms_appInitFn; static wxAppInitializerFunction ms_appInitFn;
// the one and only global application object
static wxAppConsole *ms_appInstance;
// application info (must be set from the user code) // application info (must be set from the user code)
wxString m_vendorName, // vendor name (ACME Inc) 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 // the cast is safe as in GUI build we only use wxApp, not wxAppConsole, and in
// console mode it does nothing at all // console mode it does nothing at all
#define wxTheApp ((wxApp *)wxApp::ms_appInstance) #define wxTheApp ((wxApp *)wxApp::GetInstance())
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// global functions // global functions

View File

@ -81,7 +81,7 @@ public:
{ {
// the pointer is going to be deleted in the base class dtor, don't // the pointer is going to be deleted in the base class dtor, don't
// leave the dangling pointer! // leave the dangling pointer!
wxTheApp = NULL; wxApp::SetInstance(NULL);
} }
} }
@ -89,7 +89,7 @@ public:
{ {
reset(ptr); reset(ptr);
wxTheApp = ptr; wxApp::SetInstance(ptr);
} }
DECLARE_NO_COPY_CLASS(wxAppPtr) DECLARE_NO_COPY_CLASS(wxAppPtr)
@ -356,7 +356,7 @@ void wxEntryCleanup()
wxTheApp->CleanUp(); wxTheApp->CleanUp();
delete wxTheApp; delete wxTheApp;
wxTheApp = NULL; wxApp::SetInstance(NULL);
} }