X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/68d2c3bedc97f9ac3ba5d5686616ac52dbbea598..0bbe61b8c18a1795189f0cf73cc61c14a0fb846d:/src/common/appcmn.cpp diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index dca75fefd9..15f409dbd6 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -138,13 +138,6 @@ void wxAppBase::CleanUp() delete wxTheColourDatabase; wxTheColourDatabase = NULL; -#if wxUSE_THREADS - #if wxUSE_VALIDATORS - // If we don't do the following, we get an apparent memory leak. - ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker(); - #endif // wxUSE_VALIDATORS -#endif // wxUSE_THREADS - wxAppConsole::CleanUp(); } @@ -189,8 +182,8 @@ wxLayoutDirection wxAppBase::GetLayoutDirection() const // GUI-specific command line options handling // ---------------------------------------------------------------------------- -#define OPTION_THEME _T("theme") -#define OPTION_MODE _T("mode") +#define OPTION_THEME "theme" +#define OPTION_MODE "mode" void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) { @@ -203,7 +196,7 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) #ifdef __WXUNIVERSAL__ { wxCMD_LINE_OPTION, - wxEmptyString, + NULL, OPTION_THEME, gettext_noop("specify the theme to use"), wxCMD_LINE_VAL_STRING, @@ -217,7 +210,7 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) // and not mgl/app.cpp { wxCMD_LINE_OPTION, - wxEmptyString, + NULL, OPTION_MODE, gettext_noop("specify display mode to use (e.g. 640x480-16)"), wxCMD_LINE_VAL_STRING, @@ -226,14 +219,7 @@ void wxAppBase::OnInitCmdLine(wxCmdLineParser& parser) #endif // __WXMGL__ // terminator - { - wxCMD_LINE_NONE, - wxEmptyString, - wxEmptyString, - wxEmptyString, - wxCMD_LINE_VAL_NONE, - 0x0 - } + wxCMD_LINE_DESC_END }; parser.SetDesc(cmdLineGUIDesc); @@ -365,6 +351,9 @@ void wxAppBase::DeletePendingObjects() // Returns true if more time is needed. bool wxAppBase::ProcessIdle() { + // process pending wx events before sending idle events + ProcessPendingEvents(); + wxIdleEvent event; bool needMore = false; wxWindowList::compatibility_iterator node = wxTopLevelWindows.GetFirst(); @@ -376,7 +365,16 @@ bool wxAppBase::ProcessIdle() node = node->GetNext(); } - needMore = wxAppConsole::ProcessIdle(); + if (wxAppConsole::ProcessIdle()) + needMore = true; + + // 'Garbage' collection of windows deleted with Close(). + DeletePendingObjects(); + +#if wxUSE_LOG + // flush the logged messages if any + wxLog::FlushActive(); +#endif wxUpdateUIEvent::ResetUpdateTime(); @@ -413,27 +411,6 @@ 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 // ---------------------------------------------------------------------------- @@ -442,7 +419,9 @@ void wxAppBase::OnIdle(wxIdleEvent& WXUNUSED(event)) wxLog *wxGUIAppTraitsBase::CreateLogTarget() { -#if wxUSE_LOGGUI +// DE: One day I'll remove this but right now the generic dialog used for this +// just doesn't work right at all on wxCocoa. +#if wxUSE_LOGGUI && !defined(__WXCOCOA__) return new wxLogGui; #else // we must have something! @@ -465,8 +444,10 @@ wxMessageOutput *wxGUIAppTraitsBase::CreateMessageOutput() // wxMessageOutputMessageBox doesn't work under Motif #ifdef __WXMOTIF__ return new wxMessageOutputLog; - #else + #elif wxUSE_MSGDLG return new wxMessageOutputMessageBox; + #else + return new wxMessageOutputStderr; #endif #endif // __UNIX__/!__UNIX__ } @@ -557,34 +538,3 @@ void wxGUIAppTraitsBase::RemoveFromPendingDelete(wxObject *object) wxPendingDelete.DeleteObject(object); } -#if wxUSE_SOCKETS - -#if defined(__WINDOWS__) - #include "wx/msw/gsockmsw.h" -#elif defined(__UNIX__) || defined(__DARWIN__) || defined(__OS2__) - #include "wx/unix/gsockunx.h" -#elif defined(__WXMAC__) - #include - #define OTUNIXERRORS 1 - #include - #include - #include - - #include "wx/mac/gsockmac.h" -#else - #error "Must include correct GSocket header here" -#endif - -GSocketGUIFunctionsTable* wxGUIAppTraitsBase::GetSocketGUIFunctionsTable() -{ -#if defined(__WXMAC__) && !defined(__DARWIN__) - // NB: wxMac CFM does not have any GUI-specific functions in gsocket.c and - // so it doesn't need this table at all - return NULL; -#else // !__WXMAC__ || __DARWIN__ - static GSocketGUIFunctionsTableConcrete table; - return &table; -#endif // !__WXMAC__ || __DARWIN__ -} - -#endif