-void wxWindow::ResetConstraints()
-{
- wxLayoutConstraints *constr = 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);
- }
- wxWindowList::Node *node = GetChildren().GetFirst();
- while (node)
- {
- wxWindow *win = node->GetData();
- if ( !win->IsTopLevel() )
- win->ResetConstraints();
- node = node->GetNext();
- }
-}
-
-// Need to distinguish between setting the 'fake' size for windows and sizers,
-// and setting the real values.
-void wxWindow::SetConstraintSizes(bool recurse)
-{
- wxLayoutConstraints *constr = 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 ( (constr->width.GetRelationship() != wxAsIs ) ||
- (constr->height.GetRelationship() != wxAsIs) )
- {
- SetSize(x, y, w, h);
- }
- else
- {
- // If we don't want to resize this window, just move it...
- Move(x, y);
- }
- }
- else if ( constr )
- {
- char *windowClass = GetClassInfo()->GetClassName();
-
- wxString winName;
- if ( GetName() == _T("") )
- winName = _T("unnamed");
- else
- winName = GetName();
- wxLogDebug( _T("Constraint(s) not satisfied for window of type %s, name %s:\n"),
- (const char *)windowClass,
- (const char *)winName);
- if ( !constr->left.GetDone()) wxLogDebug( _T(" unsatisfied 'left' constraint.\n") );
- if ( !constr->right.GetDone()) wxLogDebug( _T(" unsatisfied 'right' constraint.\n") );
- if ( !constr->width.GetDone()) wxLogDebug( _T(" unsatisfied 'width' constraint.\n") );
- if ( !constr->height.GetDone()) wxLogDebug( _T(" unsatisfied 'height' constraint.\n") );
- wxLogDebug( _T("Please check constraints: try adding AsIs() constraints.\n") );
- }
-
- if ( recurse )
- {
- wxWindowList::Node *node = GetChildren().GetFirst();
- while (node)
- {
- wxWindow *win = node->GetData();
- if ( !win->IsTopLevel() )
- win->SetConstraintSizes();
- node = node->GetNext();
- }
- }
-}
-
-// Only set the size/position of the constraint (if any)
-void wxWindow::SetSizeConstraint(int x, int y, int w, int h)
-{
- wxLayoutConstraints *constr = GetConstraints();
- if ( constr )
- {
- if ( x != -1 )
- {
- constr->left.SetValue(x);
- constr->left.SetDone(TRUE);
- }
- if ( y != -1 )
- {
- constr->top.SetValue(y);
- constr->top.SetDone(TRUE);
- }
- if ( w != -1 )
- {
- constr->width.SetValue(w);
- constr->width.SetDone(TRUE);
- }
- if ( h != -1 )
- {
- constr->height.SetValue(h);
- constr->height.SetDone(TRUE);
- }
- }
-}
-
-void wxWindow::MoveConstraint(int x, int y)
-{
- wxLayoutConstraints *constr = GetConstraints();
- if ( constr )
- {
- if ( x != -1 )
- {
- constr->left.SetValue(x);
- constr->left.SetDone(TRUE);
- }
- if ( y != -1 )
- {
- constr->top.SetValue(y);
- constr->top.SetDone(TRUE);
- }
- }
-}
-
-void wxWindow::GetSizeConstraint(int *w, int *h) const
-{
- wxLayoutConstraints *constr = GetConstraints();
- if ( constr )
- {
- *w = constr->width.GetValue();
- *h = constr->height.GetValue();
- }
- else
- GetSize(w, h);
-}
-
-void wxWindow::GetClientSizeConstraint(int *w, int *h) const