X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/655719367ac5e131d9642e5783f3ecf64d1a3385..ede3a6d68af66772b4f5f94208b4126bab566cc8:/src/common/layout.cpp diff --git a/src/common/layout.cpp b/src/common/layout.cpp index 170ba303a0..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; @@ -56,14 +82,10 @@ wxIndividualLayoutConstraint::wxIndividualLayoutConstraint() value = 0; percent = 0; otherEdge = wxTop; - done = FALSE; + done = false; otherWin = (wxWindowBase *) NULL; } -wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint() -{ -} - void wxIndividualLayoutConstraint::Set(wxRelationship rel, wxWindowBase *otherW, wxEdge otherE, int val, int marg) { if (rel == wxSameAs) @@ -145,10 +167,10 @@ bool wxIndividualLayoutConstraint::ResetIfWin(wxWindowBase *otherW) percent = 0; otherEdge = wxTop; otherWin = (wxWindowBase *) NULL; - return TRUE; + return true; } - return FALSE; + return false; } // Try to satisfy constraint @@ -156,8 +178,8 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr { if (relationship == wxAbsolute) { - done = TRUE; - return TRUE; + done = true; + return true; } switch (myEdge) @@ -175,11 +197,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxRightOf: { @@ -187,11 +209,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -199,11 +221,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -213,24 +235,24 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->right.GetDone() && constraints->width.GetDone()) { value = (constraints->right.GetValue() - constraints->width.GetValue() + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreX.GetDone() && constraints->width.GetDone()) { value = (int)(constraints->centreX.GetValue() - (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { int y; win->GetPosition(&value, &y); - done = TRUE; - return TRUE; + done = true; + return true; } default: break; @@ -250,11 +272,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxRightOf: { @@ -262,11 +284,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -274,11 +296,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -288,27 +310,27 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->left.GetDone() && constraints->width.GetDone()) { value = (constraints->left.GetValue() + constraints->width.GetValue() - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreX.GetDone() && constraints->width.GetDone()) { value = (int)(constraints->centreX.GetValue() + (constraints->width.GetValue()/2) - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { int x, y; int w, h; - win->GetSize(&w, &h); + wxGetAsIs(win, &w, &h); win->GetPosition(&x, &y); value = x + w; - done = TRUE; - return TRUE; + done = true; + return true; } default: break; @@ -328,11 +350,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxBelow: { @@ -340,11 +362,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -352,11 +374,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -366,24 +388,24 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->bottom.GetDone() && constraints->height.GetDone()) { value = (constraints->bottom.GetValue() - constraints->height.GetValue() + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreY.GetDone() && constraints->height.GetDone()) { value = (constraints->centreY.GetValue() - (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { int x; win->GetPosition(&x, &value); - done = TRUE; - return TRUE; + done = true; + return true; } default: break; @@ -403,11 +425,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxBelow: { @@ -415,11 +437,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -427,11 +449,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -441,27 +463,27 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->top.GetDone() && constraints->height.GetDone()) { value = (constraints->top.GetValue() + constraints->height.GetValue() - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreY.GetDone() && constraints->height.GetDone()) { value = (constraints->centreY.GetValue() + (constraints->height.GetValue()/2) - margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { int x, y; int w, h; - win->GetSize(&w, &h); + wxGetAsIs(win, &w, &h); win->GetPosition(&x, &y); value = h + y; - done = TRUE; - return TRUE; + done = true; + return true; } default: break; @@ -481,11 +503,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxRightOf: { @@ -493,11 +515,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -505,11 +527,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -519,17 +541,17 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->left.GetDone() && constraints->width.GetDone()) { value = (int)(constraints->left.GetValue() + (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->right.GetDone() && constraints->width.GetDone()) { value = (int)(constraints->left.GetValue() - (constraints->width.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } default: break; @@ -549,11 +571,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos - margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxBelow: { @@ -561,11 +583,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = edgePos + margin; - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxPercentOf: { @@ -573,11 +595,11 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxUnconstrained: { @@ -587,17 +609,17 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->bottom.GetDone() && constraints->height.GetDone()) { value = (int)(constraints->bottom.GetValue() - (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->top.GetDone() && constraints->height.GetDone()) { value = (int)(constraints->top.GetValue() + (constraints->height.GetValue()/2) + margin); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } default: break; @@ -614,22 +636,22 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01)); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { if (win) { int h; - win->GetSize(&value, &h); - done = TRUE; - return TRUE; + wxGetAsIs(win, &value, &h); + done = true; + return true; } - else return FALSE; + else return false; } case wxUnconstrained: { @@ -639,23 +661,23 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->left.GetDone() && constraints->right.GetDone()) { value = constraints->right.GetValue() - constraints->left.GetValue(); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreX.GetDone() && constraints->left.GetDone()) { value = (int)(2*(constraints->centreX.GetValue() - constraints->left.GetValue())); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->centreX.GetDone() && constraints->right.GetDone()) { value = (int)(2*(constraints->right.GetValue() - constraints->centreX.GetValue())); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } default: break; @@ -672,22 +694,22 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (edgePos != -1) { value = (int)(edgePos*(((float)percent)*0.01)); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } case wxAsIs: { if (win) { int w; - win->GetSize(&w, &value); - done = TRUE; - return TRUE; + wxGetAsIs(win, &w, &value); + done = true; + return true; } - else return FALSE; + else return false; } case wxUnconstrained: { @@ -697,23 +719,23 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr if (constraints->top.GetDone() && constraints->bottom.GetDone()) { value = constraints->bottom.GetValue() - constraints->top.GetValue(); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->top.GetDone() && constraints->centreY.GetDone()) { value = (int)(2*(constraints->centreY.GetValue() - constraints->top.GetValue())); - done = TRUE; - return TRUE; + done = true; + return true; } else if (constraints->bottom.GetDone() && constraints->centreY.GetDone()) { value = (int)(2*(constraints->bottom.GetValue() - constraints->centreY.GetValue())); - done = TRUE; - return TRUE; + done = true; + return true; } else - return FALSE; + return false; } default: break; @@ -723,7 +745,7 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr default: break; } - return FALSE; + return false; } // Get the value of this edge or dimension, or if this is not determinable, -1. @@ -960,51 +982,47 @@ wxLayoutConstraints::wxLayoutConstraints() height.SetEdge(wxHeight); } -wxLayoutConstraints::~wxLayoutConstraints() -{ -} - bool wxLayoutConstraints::SatisfyConstraints(wxWindowBase *win, int *nChanges) { int noChanges = 0; bool done = width.GetDone(); - bool newDone = (done ? TRUE : width.SatisfyConstraint(this, win)); + bool newDone = (done ? true : width.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = height.GetDone(); - newDone = (done ? TRUE : height.SatisfyConstraint(this, win)); + newDone = (done ? true : height.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = left.GetDone(); - newDone = (done ? TRUE : left.SatisfyConstraint(this, win)); + newDone = (done ? true : left.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = top.GetDone(); - newDone = (done ? TRUE : top.SatisfyConstraint(this, win)); + newDone = (done ? true : top.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = right.GetDone(); - newDone = (done ? TRUE : right.SatisfyConstraint(this, win)); + newDone = (done ? true : right.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = bottom.GetDone(); - newDone = (done ? TRUE : bottom.SatisfyConstraint(this, win)); + newDone = (done ? true : bottom.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = centreX.GetDone(); - newDone = (done ? TRUE : centreX.SatisfyConstraint(this, win)); + newDone = (done ? true : centreX.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++; done = centreY.GetDone(); - newDone = (done ? TRUE : centreY.SatisfyConstraint(this, win)); + newDone = (done ? true : centreY.SatisfyConstraint(this, win)); if (newDone != done) noChanges ++;