#ifndef WX_PRECOMP
#include "wx/app.h"
+ #include "wx/bitmap.h"
#include "wx/intl.h"
#include "wx/list.h"
#include "wx/log.h"
#include "wx/msgdlg.h"
+ #include "wx/bitmap.h"
+ #include "wx/confbase.h"
#endif
#include "wx/apptrait.h"
m_exitOnFrameDelete = Later;
}
-bool wxAppBase::Initialize(int argc, wxChar **argv)
+bool wxAppBase::Initialize(int& argc, wxChar **argv)
{
if ( !wxAppConsole::Initialize(argc, argv) )
return false;
- // for compatibility call the old initialization function too
- if ( !OnInitGui() )
- {
- wxAppConsole::CleanUp();
-
- return false;
- }
-
#if wxUSE_THREADS
wxPendingEventsLocker = new wxCriticalSection;
#endif
wxAppTraits *wxAppBase::CreateTraits()
{
- return wxAppTraits::CreateGUI();
+ return new wxGUIAppTraits;
}
// ----------------------------------------------------------------------------
}
}
+// Returns TRUE if more time is needed.
+bool wxAppBase::ProcessIdle()
+{
+ wxWindowList::Node* node = wxTopLevelWindows.GetFirst();
+ node = wxTopLevelWindows.GetFirst();
+ while (node)
+ {
+ wxWindow* win = node->GetData();
+ win->ProcessInternalIdle();
+ node = node->GetNext();
+ }
+
+ wxIdleEvent event;
+ event.SetEventObject(this);
+ bool processed = ProcessEvent(event);
+
+ wxUpdateUIEvent::ResetUpdateTime();
+
+ return processed && event.MoreRequested();
+}
+
+// Send idle event to all top-level windows
+bool wxAppBase::SendIdleEvents()
+{
+ bool needMore = FALSE;
+
+ wxWindowList::Node* node = wxTopLevelWindows.GetFirst();
+ while (node)
+ {
+ wxWindow* win = node->GetData();
+ if (SendIdleEvents(win))
+ needMore = TRUE;
+ node = node->GetNext();
+ }
+
+ return needMore;
+}
+
+// Send idle event to window and all subwindows
+bool wxAppBase::SendIdleEvents(wxWindow* win)
+{
+ bool needMore = FALSE;
+
+ if (wxIdleEvent::CanSend(win))
+ {
+ wxIdleEvent event;
+ event.SetEventObject(win);
+ win->GetEventHandler()->ProcessEvent(event);
+
+ needMore = event.MoreRequested();
+ }
+
+ wxWindowList::Node *node = win->GetChildren().GetFirst();
+ while ( node )
+ {
+ wxWindow *win = node->GetData();
+ if (SendIdleEvents(win))
+ needMore = TRUE;
+
+ node = node->GetNext();
+ }
+
+ return needMore;
+}
+
+
// ----------------------------------------------------------------------------
// wxGUIAppTraitsBase
// ----------------------------------------------------------------------------
wxPendingDelete.DeleteObject(object);
}
-// ----------------------------------------------------------------------------
-// wxAppTraits
-// ----------------------------------------------------------------------------
-
-wxAppTraits *wxAppTraitsBase::CreateGUI()
-{
- return new wxGUIAppTraits;
-}
-