Files
RobustToolbox/Robust.Client/UserInterface/Controls/MarginContainer.cs
T
Pieter-Jan BriersandGitHub ab1f4fb0e7 UI layout v2. (#908)
* UI layout v2.

All controls now act like containers.
Moved anchor/margin layout model to LayoutContainer

Implement basic WPF-like attached properties for the above LayoutContainer.

* Fix VV.
2019-12-05 13:37:58 +01:00

45 lines
1.4 KiB
C#

using Robust.Shared.Maths;
namespace Robust.Client.UserInterface.Controls
{
public class MarginContainer : Container
{
public int? MarginBottomOverride { get; set; }
public int? MarginTopOverride { get; set; }
public int? MarginRightOverride { get; set; }
public int? MarginLeftOverride { get; set; }
protected override void LayoutUpdateOverride()
{
var top = MarginTopOverride ?? 0;
var bottom = MarginBottomOverride ?? 0;
var left = MarginLeftOverride ?? 0;
var right = MarginRightOverride ?? 0;
var box = UIBox2.FromDimensions(left, top, Width - right - left, Height - bottom - top);
foreach (var child in Children)
{
FitChildInBox(child, box);
}
}
protected override Vector2 CalculateMinimumSize()
{
var top = MarginTopOverride ?? 0;
var bottom = MarginBottomOverride ?? 0;
var left = MarginLeftOverride ?? 0;
var right = MarginRightOverride ?? 0;
var childMinSize = Vector2.Zero;
foreach (var child in Children)
{
childMinSize = Vector2.ComponentMax(child.CombinedMinimumSize, childMinSize);
}
return childMinSize + (left + right, top + bottom);
}
}
}