X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f516d986371b7643efda569d64ae19e75d221411..ce7208d49d5ce2ca1dc0b3b83f14f1d04f29c4bf:/src/common/appcmn.cpp?ds=inline diff --git a/src/common/appcmn.cpp b/src/common/appcmn.cpp index d78a126972..44c63efd1a 100644 --- a/src/common/appcmn.cpp +++ b/src/common/appcmn.cpp @@ -26,13 +26,12 @@ #ifndef WX_PRECOMP #include "wx/app.h" + #include "wx/window.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" + #include "wx/utils.h" #endif #include "wx/apptrait.h" @@ -40,7 +39,7 @@ #include "wx/evtloop.h" #include "wx/msgout.h" #include "wx/thread.h" -#include "wx/utils.h" +#include "wx/vidmode.h" #include "wx/ptr_scpd.h" #if defined(__WXMSW__) @@ -55,6 +54,7 @@ #include "wx/build.h" WX_CHECK_BUILD_OPTIONS("wxCore") +WXDLLIMPEXP_DATA_CORE(wxList) wxPendingDelete; // ---------------------------------------------------------------------------- // wxEventLoopPtr @@ -157,6 +157,41 @@ void wxAppBase::CleanUp() #endif // wxUSE_THREADS } +// ---------------------------------------------------------------------------- +// various accessors +// ---------------------------------------------------------------------------- + +wxWindow* wxAppBase::GetTopWindow() const +{ + wxWindow* window = m_topWindow; + if (window == NULL && wxTopLevelWindows.GetCount() > 0) + window = wxTopLevelWindows.GetFirst()->GetData(); + return window; +} + +wxVideoMode wxAppBase::GetDisplayMode() const +{ + return wxVideoMode(); +} + +wxLayoutDirection wxAppBase::GetLayoutDirection() const +{ +#if wxUSE_INTL + const wxLocale *const locale = wxGetLocale(); + if ( locale ) + { + const wxLanguageInfo *const + info = wxLocale::GetLanguageInfo(locale->GetLanguage()); + + if ( info ) + return info->LayoutDirection; + } +#endif // wxUSE_INTL + + // we don't know + return wxLayout_Default; +} + #if wxUSE_CMDLINE_PARSER // ---------------------------------------------------------------------------- @@ -366,11 +401,14 @@ void wxAppBase::DeletePendingObjects() { wxObject *obj = node->GetData(); - delete obj; - - if (wxPendingDelete.Member(obj)) + // remove it from the list first so that if we get back here somehow + // during the object deletion (e.g. wxYield called from its dtor) we + // wouldn't try to delete it the second time + if ( wxPendingDelete.Member(obj) ) wxPendingDelete.Erase(node); + delete obj; + // Deleting one object may have deleted other pending // objects, so start from beginning of list again. node = wxPendingDelete.GetFirst();