#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
// ----------------------------------------------------------------------------
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