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()
{ 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

View File

@ -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);
}