protected override SizeF ArrangeOverride(SizeF arrangeSize) { RadElementCollection children = this.Children; int count = children.Count; int num1 = count - (this.LastChildFill ? 1 : 0); float x = 0.0f; float y = 0.0f; float num2 = 0.0f; float num3 = 0.0f; for (int index = 0; index < count; ++index) { RadElement element = children[index]; if (element != null) { SizeF desiredSize = element.DesiredSize; RectangleF finalRect = new RectangleF(x, y, Math.Max(0.0f, arrangeSize.Width - (x + num2)), Math.Max(0.0f, arrangeSize.Height - (y + num3))); if (index < num1) { switch (DockLayoutPanel.GetDock(element)) { case Dock.Left: x += desiredSize.Width; finalRect.Width = desiredSize.Width; break; case Dock.Top: y += desiredSize.Height; finalRect.Height = desiredSize.Height; break; case Dock.Right: num2 += desiredSize.Width; finalRect.X = Math.Max(0.0f, arrangeSize.Width - num2); finalRect.Width = desiredSize.Width; break; case Dock.Bottom: num3 += desiredSize.Height; finalRect.Y = Math.Max(0.0f, arrangeSize.Height - num3); finalRect.Height = desiredSize.Height; break; } } element.Arrange(finalRect); } } return(arrangeSize); }
protected override SizeF MeasureOverride(SizeF constraint) { RadElementCollection children = this.Children; float val1_1 = 0.0f; float val1_2 = 0.0f; float val2_1 = 0.0f; float val2_2 = 0.0f; int index = 0; for (int count = children.Count; index < count; ++index) { RadElement element = children[index]; if (element != null) { SizeF availableSize = new SizeF(Math.Max(0.0f, constraint.Width - val2_1), Math.Max(0.0f, constraint.Height - val2_2)); element.Measure(availableSize); SizeF desiredSize = element.DesiredSize; switch (DockLayoutPanel.GetDock(element)) { case Dock.Left: case Dock.Right: val1_2 = Math.Max(val1_2, val2_2 + desiredSize.Height); val2_1 += desiredSize.Width; continue; case Dock.Top: case Dock.Bottom: val1_1 = Math.Max(val1_1, val2_1 + desiredSize.Width); val2_2 += desiredSize.Height; continue; default: continue; } } } return(new SizeF(Math.Max(val1_1, val2_1), Math.Max(val1_2, val2_2))); }