1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-25 22:18:34 +01:00

made CanSelectContent be set automatically by the root through adding more events

This commit is contained in:
Ellpeck 2019-12-08 21:49:15 +01:00
parent 7118e323b3
commit 8d3afcf276
4 changed files with 21 additions and 3 deletions

View file

@ -140,7 +140,7 @@ namespace Demos {
root.AddChild(new RadioButton(Anchor.AutoLeft, new Vector2(1, 10), "Radio button 2!") {PositionOffset = new Vector2(0, 1)}); root.AddChild(new RadioButton(Anchor.AutoLeft, new Vector2(1, 10), "Radio button 2!") {PositionOffset = new Vector2(0, 1)});
var tooltip = new Tooltip(50, "This is a test tooltip to see the window bounding") {IsHidden = true}; var tooltip = new Tooltip(50, "This is a test tooltip to see the window bounding") {IsHidden = true};
this.UiSystem.Add("TestTooltip", tooltip).CanSelectContent = false; this.UiSystem.Add("TestTooltip", tooltip);
root.AddChild(new VerticalSpace(3)); root.AddChild(new VerticalSpace(3));
root.AddChild(new Button(Anchor.AutoLeft, new Vector2(1, 10), "Toggle Test Tooltip") { root.AddChild(new Button(Anchor.AutoLeft, new Vector2(1, 10), "Toggle Test Tooltip") {
OnPressed = element => tooltip.IsHidden = !tooltip.IsHidden OnPressed = element => tooltip.IsHidden = !tooltip.IsHidden

View file

@ -163,6 +163,8 @@ namespace MLEM.Ui.Elements {
element.AndChildren(e => { element.AndChildren(e => {
e.Root = this.Root; e.Root = this.Root;
e.System = this.System; e.System = this.System;
if (this.Root != null)
this.Root.OnElementAdded(e);
}); });
this.SetSortedChildrenDirty(); this.SetSortedChildrenDirty();
this.SetAreaDirty(); this.SetAreaDirty();
@ -175,6 +177,8 @@ namespace MLEM.Ui.Elements {
element.AndChildren(e => { element.AndChildren(e => {
e.Root = null; e.Root = null;
e.System = null; e.System = null;
if (this.Root != null)
this.Root.OnElementRemoved(e);
}); });
this.SetSortedChildrenDirty(); this.SetSortedChildrenDirty();
this.SetAreaDirty(); this.SetAreaDirty();

View file

@ -16,7 +16,7 @@ namespace MLEM.Ui.Elements {
this.CanBeSelected = false; this.CanBeSelected = false;
if (elementToHover != null) { if (elementToHover != null) {
elementToHover.OnMouseEnter += element => element.System.Add(element.GetType().Name + "Tooltip", this).CanSelectContent = false; elementToHover.OnMouseEnter += element => element.System.Add(element.GetType().Name + "Tooltip", this);
elementToHover.OnMouseExit += element => { elementToHover.OnMouseExit += element => {
if (this.System != null) if (this.System != null)
this.System.Remove(element.GetType().Name + "Tooltip"); this.System.Remove(element.GetType().Name + "Tooltip");

View file

@ -139,6 +139,7 @@ namespace MLEM.Ui {
root.Element.AndChildren(e => { root.Element.AndChildren(e => {
e.Root = root; e.Root = root;
e.System = this; e.System = this;
root.OnElementAdded(e);
e.SetAreaDirty(); e.SetAreaDirty();
}); });
this.OnRootAdded?.Invoke(root); this.OnRootAdded?.Invoke(root);
@ -160,6 +161,7 @@ namespace MLEM.Ui {
root.Element.AndChildren(e => { root.Element.AndChildren(e => {
e.Root = null; e.Root = null;
e.System = null; e.System = null;
root.OnElementRemoved(e);
e.SetAreaDirty(); e.SetAreaDirty();
}); });
this.OnRootRemoved?.Invoke(root); this.OnRootRemoved?.Invoke(root);
@ -204,17 +206,29 @@ namespace MLEM.Ui {
} }
} }
public float ActualScale => this.System.GlobalScale * this.Scale; public float ActualScale => this.System.GlobalScale * this.Scale;
public bool CanSelectContent = true;
public Matrix Transform = Matrix.Identity; public Matrix Transform = Matrix.Identity;
public Matrix InvTransform => Matrix.Invert(this.Transform); public Matrix InvTransform => Matrix.Invert(this.Transform);
public Element SelectedElement { get; private set; } public Element SelectedElement { get; private set; }
public bool CanSelectContent { get; private set; }
public Element.GenericCallback OnElementAdded;
public Element.GenericCallback OnElementRemoved;
public RootElement(string name, Element element, UiSystem system) { public RootElement(string name, Element element, UiSystem system) {
this.Name = name; this.Name = name;
this.Element = element; this.Element = element;
this.System = system; this.System = system;
this.OnElementAdded += e => {
if (e.CanBeSelected)
this.CanSelectContent = true;
};
this.OnElementRemoved += e => {
if (e.CanBeSelected && !this.Element.GetChildren(regardGrandchildren: true).Any(c => c.CanBeSelected))
this.CanSelectContent = false;
};
} }
public void SelectElement(Element element) { public void SelectElement(Element element) {