From c364d0b965f5b342cd0b3765399530226f5567b2 Mon Sep 17 00:00:00 2001 From: "anders.chen" Date: Fri, 28 Jan 2022 14:45:12 +0800 Subject: [PATCH 1/2] Add default width and height of AnchorSide. --- .../AvalonDock/Layout/LayoutAnchorable.cs | 45 +++++++++++++++---- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs index d7777870..feb5bd45 100644 --- a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs +++ b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs @@ -442,12 +442,20 @@ public void ToggleAutoHide() case AnchorSide.Right: if (parentGroup.Root.RootPanel.Orientation == Orientation.Horizontal) { - previousContainer = new LayoutAnchorablePane { DockMinWidth = AutoHideMinWidth }; + previousContainer = new LayoutAnchorablePane + { + DockMinWidth = AutoHideMinWidth, + DockMinHeight = AutoHideMinHeight + }; parentGroup.Root.RootPanel.Children.Add(previousContainer); } else { - previousContainer = new LayoutAnchorablePane(); + previousContainer = new LayoutAnchorablePane + { + DockMinHeight = AutoHideMinHeight, + DockMinWidth = AutoHideMinWidth + }; var panel = new LayoutPanel { Orientation = Orientation.Horizontal }; var root = parentGroup.Root as LayoutRoot; var oldRootPanel = parentGroup.Root.RootPanel; @@ -460,12 +468,20 @@ public void ToggleAutoHide() case AnchorSide.Left: if (parentGroup.Root.RootPanel.Orientation == Orientation.Horizontal) { - previousContainer = new LayoutAnchorablePane { DockMinWidth = AutoHideMinWidth }; + previousContainer = new LayoutAnchorablePane + { + DockMinWidth = AutoHideMinWidth, + DockMinHeight = AutoHideMinHeight + }; parentGroup.Root.RootPanel.Children.Insert(0, previousContainer); } else { - previousContainer = new LayoutAnchorablePane(); + previousContainer = new LayoutAnchorablePane + { + DockMinHeight = AutoHideMinHeight, + DockMinWidth = AutoHideMinWidth + }; var panel = new LayoutPanel { Orientation = Orientation.Horizontal }; var root = parentGroup.Root as LayoutRoot; var oldRootPanel = parentGroup.Root.RootPanel; @@ -478,12 +494,20 @@ public void ToggleAutoHide() case AnchorSide.Top: if (parentGroup.Root.RootPanel.Orientation == Orientation.Vertical) { - previousContainer = new LayoutAnchorablePane { DockMinHeight = AutoHideMinHeight }; + previousContainer = new LayoutAnchorablePane + { + DockMinHeight = AutoHideMinHeight, + DockMinWidth = AutoHideMinWidth + }; parentGroup.Root.RootPanel.Children.Insert(0, previousContainer); } else { - previousContainer = new LayoutAnchorablePane(); + previousContainer = new LayoutAnchorablePane + { + DockMinWidth = AutoHideMinWidth, + DockMinHeight = AutoHideMinHeight + }; var panel = new LayoutPanel { Orientation = Orientation.Vertical }; var root = parentGroup.Root as LayoutRoot; var oldRootPanel = parentGroup.Root.RootPanel; @@ -498,13 +522,18 @@ public void ToggleAutoHide() { previousContainer = new LayoutAnchorablePane { - DockMinHeight = AutoHideMinHeight + DockMinHeight = AutoHideMinHeight, + DockMinWidth = AutoHideMinWidth }; parentGroup.Root.RootPanel.Children.Add(previousContainer); } else { - previousContainer = new LayoutAnchorablePane(); + previousContainer = new LayoutAnchorablePane + { + DockMinWidth = AutoHideMinWidth, + DockMinHeight = AutoHideMinHeight + }; var panel = new LayoutPanel { Orientation = Orientation.Vertical }; var root = parentGroup.Root as LayoutRoot; var oldRootPanel = parentGroup.Root.RootPanel; From 0d2782cbe2dda3df3b98acce0f81e16ec45441ca Mon Sep 17 00:00:00 2001 From: "anders.chen" Date: Sat, 29 Jan 2022 09:09:57 +0800 Subject: [PATCH 2/2] Keep the currently active LayoutAnchorable selected after pinning. --- source/Components/AvalonDock/Layout/LayoutAnchorable.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs index feb5bd45..c098d113 100644 --- a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs +++ b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs @@ -553,9 +553,17 @@ public void ToggleAutoHide() cnt.PreviousContainer = previousContainer; } + var selectedIndex = -1; + var selectedItem = parentGroup.Children.FirstOrDefault(x => x.IsActive); + if (selectedItem != null) + selectedIndex = parentGroup.Children.IndexOf(selectedItem); + foreach (var anchorableToToggle in parentGroup.Children.ToArray()) previousContainer.Children.Add(anchorableToToggle); + if (selectedIndex != -1) + previousContainer.SelectedContentIndex = selectedIndex; + parentSide.Children.Remove(parentGroup); var parent = previousContainer.Parent as LayoutGroupBase;