From: Robin Dunn Date: Sat, 12 Mar 2005 20:57:14 +0000 (+0000) Subject: "As is" means the current size (or position) not the best size. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/156ab66d5b7bc189ef680ab29c34f5cb33c10384 "As is" means the current size (or position) not the best size. Factored out AsIs size calculations to an inline so it can be experimented with further if desired. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32785 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/common/layout.cpp b/src/common/layout.cpp index c542527219..f94d850617 100644 --- a/src/common/layout.cpp +++ b/src/common/layout.cpp @@ -48,6 +48,32 @@ IMPLEMENT_DYNAMIC_CLASS(wxLayoutConstraints, wxObject) + +inline void wxGetAsIs(wxWindowBase* win, int* w, int* h) +{ +#if 1 + // The old way. Works for me. + win->GetSize(w, h); +#endif + +#if 0 + // Vadim's change. Breaks wxPython's LayoutAnchors + win->GetBestSize(w, h); +#endif + +#if 0 + // Proposed compromise. Doesn't work. + int sw, sh, bw, bh; + win->GetSize(&sw, &sh); + win->GetBestSize(&bw, &bh); + if (w) + *w = wxMax(sw, bw); + if (h) + *h = wxMax(sh, bh); +#endif +} + + wxIndividualLayoutConstraint::wxIndividualLayoutConstraint() { myEdge = wxTop; @@ -300,7 +326,7 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr { int x, y; int w, h; - win->GetBestSize(&w, &h); + wxGetAsIs(win, &w, &h); win->GetPosition(&x, &y); value = x + w; done = true; @@ -453,7 +479,7 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr { int x, y; int w, h; - win->GetBestSize(&w, &h); + wxGetAsIs(win, &w, &h); win->GetPosition(&x, &y); value = h + y; done = true; @@ -621,7 +647,7 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (win) { int h; - win->GetBestSize(&value, &h); + wxGetAsIs(win, &value, &h); done = true; return true; } @@ -679,7 +705,7 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (win) { int w; - win->GetBestSize(&w, &value); + wxGetAsIs(win, &w, &value); done = true; return true; }