From 45711e7770f28ce7041036df7937fbe21225a033 Mon Sep 17 00:00:00 2001 From: Misaki Date: Sat, 28 Mar 2026 22:48:58 +0900 Subject: [PATCH] fix: address re-entrancy in ReplaceChild and invalid split in AddDocument --- src/Editor/Ghost.Editor/View/Controls/Docking/DockContainer.cs | 2 +- src/Editor/Ghost.Editor/View/Controls/Docking/DockingLayout.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Editor/Ghost.Editor/View/Controls/Docking/DockContainer.cs b/src/Editor/Ghost.Editor/View/Controls/Docking/DockContainer.cs index 150ef2a..2cb06d3 100644 --- a/src/Editor/Ghost.Editor/View/Controls/Docking/DockContainer.cs +++ b/src/Editor/Ghost.Editor/View/Controls/Docking/DockContainer.cs @@ -105,7 +105,7 @@ public abstract class DockContainer : DockModule throw new ArgumentException("newChild is already in this container", nameof(newChild)); } - newChild.Owner?.RemoveChild(newChild); + newChild.Owner?.RemoveChildInternal(newChild, false); // Remove oldChild without triggering cleanup _isCleaningUp = true; diff --git a/src/Editor/Ghost.Editor/View/Controls/Docking/DockingLayout.cs b/src/Editor/Ghost.Editor/View/Controls/Docking/DockingLayout.cs index bdfe58a..0502150 100644 --- a/src/Editor/Ghost.Editor/View/Controls/Docking/DockingLayout.cs +++ b/src/Editor/Ghost.Editor/View/Controls/Docking/DockingLayout.cs @@ -100,7 +100,7 @@ public class DockingLayout : Control } } - if (target == DockTarget.Center) + if (target == DockTarget.Center || targetGroup.Children.Count == 0) { targetGroup.AddChild(document); }