]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/appcmn.cpp
wxTheApp can't be assigned to, anyhow, so make ms_appInstance private and provide...
[wxWidgets.git] / src / common / appcmn.cpp
index 8fa4b91bd4510aac63ba729f4ba518670334342d..3d7af86d6c184253a3e9c9de883047384f371635 100644 (file)
@@ -232,31 +232,13 @@ bool wxAppBase::ProcessIdle()
     return needMore;
 }
 
-#if 0
-// Send idle event to all top-level windows
-bool wxAppBase::SendIdleEvents()
-{
-    bool needMore = FALSE;
-
-    wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst();
-    while (node)
-    {
-        wxWindow* win = node->GetData();
-        if (SendIdleEvents(win))
-            needMore = TRUE;
-        node = node->GetNext();
-    }
-
-    return needMore;
-}
-#endif
-
 // Send idle event to window and all subwindows
 bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
 {
     bool needMore = FALSE;
-    
+
     win->OnInternalIdle();
+
     if (wxIdleEvent::CanSend(win))
     {
         event.SetEventObject(win);
@@ -265,12 +247,11 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
         if (event.MoreRequested())
             needMore = TRUE;
     }
-
     wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst();
     while ( node )
     {
-        wxWindow *win = node->GetData();
-        if (SendIdleEvents(win, event))
+        wxWindow *child = node->GetData();
+        if (SendIdleEvents(child, event))
             needMore = TRUE;
 
         node = node->GetNext();
@@ -279,6 +260,26 @@ bool wxAppBase::SendIdleEvents(wxWindow* win, wxIdleEvent& event)
     return needMore;
 }
 
+void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event))
+{
+    // If there are pending events, we must process them: pending events
+    // are either events to the threads other than main or events posted
+    // with wxPostEvent() functions
+    // GRG: I have moved this here so that all pending events are processed
+    //   before starting to delete any objects. This behaves better (in
+    //   particular, wrt wxPostEvent) and is coherent with wxGTK's current
+    //   behaviour. Changed Feb/2000 before 2.1.14
+    ProcessPendingEvents();
+
+    // 'Garbage' collection of windows deleted with Close().
+    DeletePendingObjects();
+
+#if wxUSE_LOG
+    // flush the logged messages if any
+    wxLog::FlushActive();
+#endif // wxUSE_LOG
+
+}
 
 // ----------------------------------------------------------------------------
 // wxGUIAppTraitsBase
@@ -321,6 +322,12 @@ wxFontMapper *wxGUIAppTraitsBase::CreateFontMapper()
 
 #endif // wxUSE_FONTMAP
 
+wxRendererNative *wxGUIAppTraitsBase::CreateRenderer()
+{
+    // use the default native renderer by default
+    return NULL;
+}
+
 #ifdef __WXDEBUG__
 
 bool wxGUIAppTraitsBase::ShowAssertDialog(const wxString& msg)