From d0c805cf18f8d54732102d5479a6e27b632947da Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Tue, 13 Sep 2022 15:44:12 +0200 Subject: [PATCH] Fixed Element.OnChildAdded and Element.OnChildRemoved being called for grandchildren when a child is added --- CHANGELOG.md | 1 + MLEM.Ui/Elements/Element.cs | 10 ++++++---- MLEM.Ui/UiSystem.cs | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d505d6..93824c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ Fixes - Fixed paragraphs sometimes not updating their position properly when hidden because they're empty - Fixed panels sometimes not drawing children that came into view when their positions changed unexpectedly - Fixed UiMarkdownParser not parsing formatting in headings and blockquotes +- Fixed Element.OnChildAdded and Element.OnChildRemoved being called for grandchildren when a child is added ### MLEM.Data Improvements diff --git a/MLEM.Ui/Elements/Element.cs b/MLEM.Ui/Elements/Element.cs index 4e168f0..e0d7e54 100644 --- a/MLEM.Ui/Elements/Element.cs +++ b/MLEM.Ui/Elements/Element.cs @@ -407,11 +407,13 @@ namespace MLEM.Ui.Elements { /// public GamepadNextElementCallback GetGamepadNextElement; /// - /// Event that is called when a child or any level of grandchild is added to this element using + /// Event that is called when a child is added to this element using + /// Note that, while this event is only called for immediate children of this element, is called for all children and grandchildren. /// public OtherElementCallback OnChildAdded; /// - /// Event that is called when a child or any level of grandchild is removed from this element using + /// Event that is called when a child is removed from this element using . + /// Note that, while this event is only called for immediate children of this element, is called for all children and grandchildren. /// public OtherElementCallback OnChildRemoved; /// @@ -507,8 +509,8 @@ namespace MLEM.Ui.Elements { e.System = this.System; e.OnAddedToUi?.Invoke(e); this.Root?.InvokeOnElementAdded(e); - this.OnChildAdded?.Invoke(this, e); }); + this.OnChildAdded?.Invoke(this, element); this.SetSortedChildrenDirty(); element.SetAreaDirty(); return element; @@ -531,8 +533,8 @@ namespace MLEM.Ui.Elements { e.System = null; e.OnRemovedFromUi?.Invoke(e); this.Root?.InvokeOnElementRemoved(e); - this.OnChildRemoved?.Invoke(this, e); }); + this.OnChildRemoved?.Invoke(this, element); this.SetSortedChildrenDirty(); } diff --git a/MLEM.Ui/UiSystem.cs b/MLEM.Ui/UiSystem.cs index b9d78e7..1e4587b 100644 --- a/MLEM.Ui/UiSystem.cs +++ b/MLEM.Ui/UiSystem.cs @@ -572,7 +572,7 @@ namespace MLEM.Ui { /// public event Element.GenericCallback OnElementAdded; /// - /// Event that is invoked when a is removed rom this root element of any of its children. + /// Event that is invoked when a is removed rom this root element or any of its children. /// public event Element.GenericCallback OnElementRemoved; ///