diff --git a/src/Dock.Model/FactoryBase.cs b/src/Dock.Model/FactoryBase.cs index 4673e1dd7..9ab427893 100644 --- a/src/Dock.Model/FactoryBase.cs +++ b/src/Dock.Model/FactoryBase.cs @@ -404,12 +404,17 @@ public virtual void SplitToDock(IDock dock, IDockable dockable, DockOperation op // Fallback to the original behavior when optimization is not applicable var layout = CreateSplitLayout(dock, dockable, operation); + var wasDefaultDockable = ownerDock.DefaultDockable == dock; RemoveVisibleDockableAt(ownerDock, index); OnDockableRemoved(dockable); OnDockableUndocked(dockable, operation); InsertVisibleDockable(ownerDock, index, layout); OnDockableAdded(dockable); ownerDock.ActiveDockable = layout; + if (wasDefaultDockable) + { + ownerDock.DefaultDockable = layout; + } InitDockable(layout, ownerDock); OnDockableDocked(dockable, operation); } diff --git a/tests/Dock.Avalonia.HeadlessTests/FactorySplitTests.cs b/tests/Dock.Avalonia.HeadlessTests/FactorySplitTests.cs index 2e69f74c2..cd0c73d3f 100644 --- a/tests/Dock.Avalonia.HeadlessTests/FactorySplitTests.cs +++ b/tests/Dock.Avalonia.HeadlessTests/FactorySplitTests.cs @@ -66,6 +66,8 @@ public void SplitToDock_Right_Replaces_Dock_With_Layout() root.Factory = factory; var dock = new ProportionalDock { VisibleDockables = factory.CreateList() }; factory.AddDockable(root, dock); + root.ActiveDockable = dock; + root.DefaultDockable = dock; var doc = new Document(); factory.SplitToDock(dock, doc, DockOperation.Right); @@ -73,6 +75,8 @@ public void SplitToDock_Right_Replaces_Dock_With_Layout() var layout = Assert.IsType(root.VisibleDockables![0]); Assert.Equal(Orientation.Horizontal, layout.Orientation); Assert.Equal(3, layout.VisibleDockables!.Count); + Assert.Same(layout, root.ActiveDockable); + Assert.Same(layout, root.DefaultDockable); } [AvaloniaFact]