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:
Václav Slavík
2003-08-17 12:50:53 +00:00
parent 4a93ea29b5
commit a3bf7524f3
79 changed files with 12 additions and 2012 deletions

View File

@@ -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