removed WXWIN_COMPATIBILITY and WXWIN_COMPATIBILITY_2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1013,134 +1013,4 @@ bool wxLayoutConstraints::SatisfyConstraints(wxWindowBase *win, int *nChanges)
|
||||
return AreSatisfied();
|
||||
}
|
||||
|
||||
/*
|
||||
* Main constrained layout algorithm. Look at all the child
|
||||
* windows, and their constraints (if any).
|
||||
* The idea is to keep iterating through the constraints
|
||||
* until all left, right, bottom and top edges, and widths and heights,
|
||||
* are known (or no change occurs and we've failed to resolve all
|
||||
* constraints).
|
||||
*
|
||||
* If the user has not specified a dimension or edge, it will be
|
||||
* be calculated from the other known values. E.g. If we know
|
||||
* the right hand edge and the left hand edge, we now know the width.
|
||||
* The snag here is that this means we must specify absolute dimensions
|
||||
* twice (in constructor and in constraint), if we wish to use the
|
||||
* constraint notation to just set the position, for example.
|
||||
* Otherwise, if we only set ONE edge and no dimension, it would never
|
||||
* find the other edge.
|
||||
*
|
||||
* Algorithm:
|
||||
|
||||
Mark all constraints as not done.
|
||||
|
||||
iterations = 0;
|
||||
until no change or iterations >= max iterations
|
||||
For each child:
|
||||
{
|
||||
Calculate all constraints
|
||||
}
|
||||
iterations ++;
|
||||
|
||||
For each child
|
||||
Set each calculated position and size
|
||||
|
||||
*/
|
||||
|
||||
#if WXWIN_COMPATIBILITY
|
||||
bool wxOldDoLayout(wxWindowBase *win)
|
||||
{
|
||||
// Make sure this isn't called recursively from below
|
||||
static wxList doneSoFar;
|
||||
|
||||
if (doneSoFar.Member(win))
|
||||
return TRUE;
|
||||
|
||||
doneSoFar.Append(win);
|
||||
|
||||
wxNode *node = win->GetChildren().First();
|
||||
while (node)
|
||||
{
|
||||
wxWindowBase *child = (wxWindowBase *)node->Data();
|
||||
wxLayoutConstraints *constr = child->GetConstraints();
|
||||
if (constr)
|
||||
{
|
||||
constr->left.SetDone(FALSE);
|
||||
constr->top.SetDone(FALSE);
|
||||
constr->right.SetDone(FALSE);
|
||||
constr->bottom.SetDone(FALSE);
|
||||
constr->width.SetDone(FALSE);
|
||||
constr->height.SetDone(FALSE);
|
||||
constr->centreX.SetDone(FALSE);
|
||||
constr->centreY.SetDone(FALSE);
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
int noIterations = 0;
|
||||
int maxIterations = 500;
|
||||
int noChanges = 1;
|
||||
|
||||
while ((noChanges > 0) && (noIterations < maxIterations))
|
||||
{
|
||||
noChanges = 0;
|
||||
wxNode *node = win->GetChildren().First();
|
||||
while (node)
|
||||
{
|
||||
wxWindowBase *child = (wxWindowBase *)node->Data();
|
||||
wxLayoutConstraints *constr = child->GetConstraints();
|
||||
if (constr)
|
||||
{
|
||||
int tempNoChanges = 0;
|
||||
(void)constr->SatisfyConstraints(child, &tempNoChanges);
|
||||
noChanges += tempNoChanges;
|
||||
}
|
||||
node = node->Next();
|
||||
}
|
||||
noIterations ++;
|
||||
}
|
||||
/*
|
||||
// Would be nice to have a test here to see _which_ constraint(s)
|
||||
// failed, so we can print a specific diagnostic message.
|
||||
if (noFailures > 0)
|
||||
{
|
||||
wxDebugMsg(_("wxWindowBase::Layout() failed.\n"));
|
||||
}
|
||||
*/
|
||||
// Now set the sizes and positions of the children, and
|
||||
// recursively call Layout().
|
||||
node = win->GetChildren().First();
|
||||
while (node)
|
||||
{
|
||||
wxWindowBase *child = (wxWindowBase *)node->Data();
|
||||
wxLayoutConstraints *constr = child->GetConstraints();
|
||||
if (constr && constr->left.GetDone() && constr->right.GetDone() &&
|
||||
constr->width.GetDone() && constr->height.GetDone())
|
||||
{
|
||||
int x = constr->left.GetValue();
|
||||
int y = constr->top.GetValue();
|
||||
int w = constr->width.GetValue();
|
||||
int h = constr->height.GetValue();
|
||||
|
||||
// If we don't want to resize this window, just move it...
|
||||
if ((constr->width.GetRelationship() != wxAsIs) ||
|
||||
(constr->height.GetRelationship() != wxAsIs))
|
||||
{
|
||||
// _Should_ call Layout() recursively.
|
||||
child->SetSize(x, y, w, h);
|
||||
}
|
||||
else
|
||||
{
|
||||
child->Move(x, y);
|
||||
}
|
||||
}
|
||||
else
|
||||
child->Layout();
|
||||
node = node->Next();
|
||||
}
|
||||
doneSoFar.DeleteObject(win);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
#endif // WXWIN_COMPATIBILITY
|
||||
|
||||
#endif // wxUSE_CONSTRAINTS
|
||||
|
Reference in New Issue
Block a user