X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce6d2511f82aafc78aba320018c868f826ab172b..fa8dca8dd1ba0d6ee9b2c5919a3a944ecde68a50:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index d185f5bff0..761c50b9ff 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -36,10 +36,60 @@ #include "wx/thread.h" #include "wx/confbase.h" +#ifdef __WXUNIVERSAL__ + #include "wx/univ/theme.h" +#endif // __WXUNIVERSAL__ + // =========================================================================== // implementation // =========================================================================== +wxAppBase::wxAppBase() +{ + wxTheApp = (wxApp *)this; + + // VZ: what's this? is it obsolete? + m_wantDebugOutput = FALSE; + +#if wxUSE_GUI + m_topWindow = (wxWindow *)NULL; + m_useBestVisual = FALSE; + m_exitOnFrameDelete = TRUE; + m_isActive = TRUE; +#endif // wxUSE_GUI +} + +// ---------------------------------------------------------------------------- +// initialization and termination +// ---------------------------------------------------------------------------- + +#if wxUSE_GUI +bool wxAppBase::OnInitGui() +{ +#ifdef __WXUNIVERSAL__ + if ( !wxTheme::CreateDefault() ) + return FALSE; +#endif // __WXUNIVERSAL__ + + return TRUE; +} +#endif // wxUSE_GUI + +int wxAppBase::OnExit() +{ +#if wxUSE_CONFIG + // delete the config object if any (don't use Get() here, but Set() + // because Get() could create a new config object) + delete wxConfigBase::Set((wxConfigBase *) NULL); +#endif // wxUSE_CONFIG + +#ifdef __WXUNIVERSAL__ + delete wxTheme::Set(NULL); +#endif // __WXUNIVERSAL__ + + return 0; +} + // --------------------------------------------------------------------------- // wxAppBase // ---------------------------------------------------------------------------- @@ -63,24 +113,42 @@ void wxAppBase::ProcessPendingEvents() delete node; // In ProcessPendingEvents(), new handlers might be add - // and we can safely leave the critical section here. + // and we can safely leave the critical section here. wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); handler->ProcessPendingEvents(); wxENTER_CRIT_SECT( *wxPendingEventsLocker ); node = wxPendingEvents->First(); } - + wxLEAVE_CRIT_SECT( *wxPendingEventsLocker ); } -int wxAppBase::OnExit() +// ---------------------------------------------------------------------------- +// misc +// ---------------------------------------------------------------------------- + +#if wxUSE_GUI + +void wxAppBase::SetActive(bool active, wxWindow *lastFocus) { -#if wxUSE_CONFIG - // delete the config object if any (don't use Get() here, but Set() - // because Get() could create a new config object) - delete wxConfigBase::Set((wxConfigBase *) NULL); -#endif // wxUSE_CONFIG + static wxWindow *s_lastFocus = (wxWindow *)NULL; - return 0; + m_isActive = active; + + // if we're being deactivated remember the last focused window + if ( !active ) + { + s_lastFocus = lastFocus; + } + + if ( s_lastFocus ) + { + // give the focused window the chance to refresh itself if its + // appearance depends on the app activation state + wxActivateEvent event(wxEVT_ACTIVATE, active); + s_lastFocus->GetEventHandler()->ProcessEvent(event); + } } + +#endif // wxUSE_GUI