]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appcmn.cpp
implemented Carbon printing for wxMac
[wxWidgets.git] / src / common / appcmn.cpp
index d185f5bff00e9efc6876069792f58ffbb871269b..761c50b9ff26b68aa01956de8fdb14a4d156dfea 100644 (file)
 #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