mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-12-24 01:09:23 +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)});
|
||||
|
||||
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 Button(Anchor.AutoLeft, new Vector2(1, 10), "Toggle Test Tooltip") {
|
||||
OnPressed = element => tooltip.IsHidden = !tooltip.IsHidden
|
||||
|
|
|
@ -163,6 +163,8 @@ namespace MLEM.Ui.Elements {
|
|||
element.AndChildren(e => {
|
||||
e.Root = this.Root;
|
||||
e.System = this.System;
|
||||
if (this.Root != null)
|
||||
this.Root.OnElementAdded(e);
|
||||
});
|
||||
this.SetSortedChildrenDirty();
|
||||
this.SetAreaDirty();
|
||||
|
@ -175,6 +177,8 @@ namespace MLEM.Ui.Elements {
|
|||
element.AndChildren(e => {
|
||||
e.Root = null;
|
||||
e.System = null;
|
||||
if (this.Root != null)
|
||||
this.Root.OnElementRemoved(e);
|
||||
});
|
||||
this.SetSortedChildrenDirty();
|
||||
this.SetAreaDirty();
|
||||
|
|
|
@ -16,7 +16,7 @@ namespace MLEM.Ui.Elements {
|
|||
this.CanBeSelected = false;
|
||||
|
||||
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 => {
|
||||
if (this.System != null)
|
||||
this.System.Remove(element.GetType().Name + "Tooltip");
|
||||
|
|
|
@ -139,6 +139,7 @@ namespace MLEM.Ui {
|
|||
root.Element.AndChildren(e => {
|
||||
e.Root = root;
|
||||
e.System = this;
|
||||
root.OnElementAdded(e);
|
||||
e.SetAreaDirty();
|
||||
});
|
||||
this.OnRootAdded?.Invoke(root);
|
||||
|
@ -160,6 +161,7 @@ namespace MLEM.Ui {
|
|||
root.Element.AndChildren(e => {
|
||||
e.Root = null;
|
||||
e.System = null;
|
||||
root.OnElementRemoved(e);
|
||||
e.SetAreaDirty();
|
||||
});
|
||||
this.OnRootRemoved?.Invoke(root);
|
||||
|
@ -204,17 +206,29 @@ namespace MLEM.Ui {
|
|||
}
|
||||
}
|
||||
public float ActualScale => this.System.GlobalScale * this.Scale;
|
||||
public bool CanSelectContent = true;
|
||||
|
||||
public Matrix Transform = Matrix.Identity;
|
||||
public Matrix InvTransform => Matrix.Invert(this.Transform);
|
||||
|
||||
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) {
|
||||
this.Name = name;
|
||||
this.Element = element;
|
||||
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) {
|
||||
|
|
Loading…
Reference in a new issue