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:
parent
7118e323b3
commit
8d3afcf276
4 changed files with 21 additions and 3 deletions
|
@ -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
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in a new issue