X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a3a4105df6f49ff2e2d351bd76e2a42b7b4da34b..90f9b8ef0c83c09f80c2f60ad65407ba16f11a3c:/src/common/wincmn.cpp?ds=sidebyside diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 7b458dca63..314d68ea0e 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -29,7 +29,6 @@ #include "wx/log.h" #include "wx/intl.h" #include "wx/frame.h" - #include "wx/defs.h" #include "wx/window.h" #include "wx/control.h" #include "wx/checkbox.h" @@ -42,11 +41,8 @@ #include "wx/statusbr.h" #include "wx/toolbar.h" #include "wx/dcclient.h" -#endif //WX_PRECOMP - -#if defined(__WXMAC__) && wxUSE_SCROLLBAR #include "wx/scrolbar.h" -#endif +#endif //WX_PRECOMP #if wxUSE_CONSTRAINTS #include "wx/layout.h" @@ -91,6 +87,9 @@ extern const unsigned int gtk_micro_version; #endif +// Windows List +WXDLLIMPEXP_DATA_CORE(wxWindowList) wxTopLevelWindows; + // ---------------------------------------------------------------------------- // static data // ---------------------------------------------------------------------------- @@ -221,9 +220,6 @@ wxWindowBase::wxWindowBase() // VZ: this one shouldn't exist... m_isBeingDeleted = false; - - // Reserved for future use - m_windowReserved = NULL; } // common part of window creation process @@ -446,8 +442,10 @@ void wxWindowBase::InvalidateBestSize() m_bestSizeCache = wxDefaultSize; // parent's best size calculation may depend on its children's - // best sizes, so let's invalidate it as well to be safe: - if (m_parent) + // as long as child window we are in is not top level window itself + // (because the TLW size is never resized automatically) + // so let's invalidate it as well to be safe: + if (m_parent && !IsTopLevel()) m_parent->InvalidateBestSize(); } @@ -713,6 +711,18 @@ wxSize wxWindowBase::DoGetVirtualSize() const return size; } +void wxWindowBase::DoGetScreenPosition(int *x, int *y) const +{ + // screen position is the same as (0, 0) in client coords for non TLWs (and + // TLWs override this method) + if ( x ) + *x = 0; + if ( y ) + *y = 0; + + ClientToScreen(x, y); +} + // ---------------------------------------------------------------------------- // show/hide/enable/disable the window // ---------------------------------------------------------------------------- @@ -1517,10 +1527,13 @@ void wxWindowBase::SetToolTip( const wxString &tip ) void wxWindowBase::DoSetToolTip(wxToolTip *tooltip) { - if ( m_tooltip ) - delete m_tooltip; + if ( m_tooltip != tooltip ) + { + if ( m_tooltip ) + delete m_tooltip; - m_tooltip = tooltip; + m_tooltip = tooltip; + } } #endif // wxUSE_TOOLTIPS