Size Border::ArrangeOverrideWithError (Size finalSize, MoonError *error) { Thickness border = *GetPadding () + *GetBorderThickness (); Size arranged = finalSize; VisualTreeWalker walker = VisualTreeWalker (this); while (UIElement *child = walker.Step ()) { Rect childRect (0,0,finalSize.width,finalSize.height); childRect = childRect.GrowBy (-border); child->ArrangeWithError (childRect, error); arranged = Size (childRect.width, childRect.height).GrowBy (border); arranged = arranged.Max (finalSize); } return finalSize; }