X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14421681253f09f119dad82364f5ada40f58f2fc..cf1a582ab947647cd17ad481c1b95e51b211ffcc:/src/common/wincmn.cpp diff --git a/src/common/wincmn.cpp b/src/common/wincmn.cpp index 614ee45993..ce2bb0a237 100644 --- a/src/common/wincmn.cpp +++ b/src/common/wincmn.cpp @@ -75,7 +75,7 @@ #include "wx/platinfo.h" #include "wx/private/window.h" -#ifdef __WXMSW__ +#ifdef __WINDOWS__ #include "wx/msw/wrapwin.h" #endif @@ -916,6 +916,24 @@ wxSize wxWindowBase::GetBestSize() const return DoGetBestSize(); } +int wxWindowBase::GetBestHeight(int width) const +{ + const int height = DoGetBestClientHeight(width); + + return height == wxDefaultCoord + ? GetBestSize().y + : height + DoGetBorderSize().y; +} + +int wxWindowBase::GetBestWidth(int height) const +{ + const int width = DoGetBestClientWidth(height); + + return width == wxDefaultCoord + ? GetBestSize().x + : width + DoGetBorderSize().x; +} + void wxWindowBase::SetMinSize(const wxSize& minSize) { m_minWidth = minSize.x; @@ -1242,9 +1260,28 @@ void wxWindowBase::Thaw() } // ---------------------------------------------------------------------------- -// reparenting the window +// Dealing with parents and children. // ---------------------------------------------------------------------------- +bool wxWindowBase::IsDescendant(wxWindowBase* win) const +{ + // Iterate until we find this window in the parent chain or exhaust it. + while ( win ) + { + wxWindow* const parent = win->GetParent(); + if ( parent == this ) + return true; + + // Stop iterating on reaching the top level window boundary. + if ( parent->IsTopLevel() ) + break; + + win = parent; + } + + return false; +} + void wxWindowBase::AddChild(wxWindowBase *child) { wxCHECK_RET( child, wxT("can't add a NULL child") ); @@ -1916,6 +1953,7 @@ wxWindowBase::FindWindowById( long id, const wxWindow* parent ) // dialog oriented functions // ---------------------------------------------------------------------------- +#if WXWIN_COMPATIBILITY_2_8 void wxWindowBase::MakeModal(bool modal) { // Disable all other windows @@ -1932,6 +1970,7 @@ void wxWindowBase::MakeModal(bool modal) } } } +#endif // WXWIN_COMPATIBILITY_2_8 bool wxWindowBase::Validate() { @@ -2607,17 +2646,12 @@ void wxWindowBase::GetPositionConstraint(int *x, int *y) const void wxWindowBase::AdjustForParentClientOrigin(int& x, int& y, int sizeFlags) const { - // don't do it for the dialogs/frames - they float independently of their - // parent - if ( !IsTopLevel() ) + wxWindow *parent = GetParent(); + if ( !(sizeFlags & wxSIZE_NO_ADJUSTMENTS) && parent ) { - wxWindow *parent = GetParent(); - if ( !(sizeFlags & wxSIZE_NO_ADJUSTMENTS) && parent ) - { - wxPoint pt(parent->GetClientAreaOrigin()); - x += pt.x; - y += pt.y; - } + wxPoint pt(parent->GetClientAreaOrigin()); + x += pt.x; + y += pt.y; } }