mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-02 18:17:09 +02:00
* 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.
45 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|