From dbe64f1bcf768c02ca62314559b5657197b7453c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Sun, 4 Mar 2018 12:33:20 +0100 Subject: [PATCH] clear Slot when parent change in go, docker wip --- Default.style | 4 ++-- src/GraphicObjects/DockStack.cs | 14 ++++++++++---- src/GraphicObjects/DockWindow.cs | 2 +- src/GraphicObjects/Docker.cs | 10 +++++----- src/GraphicObjects/GenericStack.cs | 4 +--- src/GraphicObjects/GraphicObject.cs | 1 + src/Interface.cs | 2 +- 7 files changed, 21 insertions(+), 16 deletions(-) diff --git a/Default.style b/Default.style index 3c260b5c..70278cc9 100644 --- a/Default.style +++ b/Default.style @@ -73,8 +73,8 @@ Slider { } Splitter { Focusable = "true"; - Margin = "1"; - Background = "White"; + Margin = "2"; + Background = "Gray"; } Spinner { Foreground = "DimGray"; diff --git a/src/GraphicObjects/DockStack.cs b/src/GraphicObjects/DockStack.cs index 29ebe0ec..4800c0aa 100644 --- a/src/GraphicObjects/DockStack.cs +++ b/src/GraphicObjects/DockStack.cs @@ -184,15 +184,21 @@ namespace Crow return; DockStack dsp = Parent as DockStack; if (dsp == null) { - SubStack = null; RemoveChild (0); + if (SubStack is DockStack) { + Docker dk = Parent as Docker; + dk.RemoveChild (this); + dk.InsertChild (0, SubStack); + dk.SubStack = SubStack as DockStack; + } + SubStack = null; return; } GraphicObject g = Children [0]; RemoveChild (g); int i = dsp.Children.IndexOf (this); dsp.RemoveChild (this); - dsp.AddChild (g); + dsp.InsertChild (i, g); dsp.SubStack = g; // if (SubStack is DockStack) { // @@ -267,7 +273,7 @@ namespace Crow activeStack.AddChild (activeStack.SubStack); } else { activeStack.InsertChild (0, dw); - activeStack.InsertChild (0, splitter); + activeStack.InsertChild (1, splitter); } break; case Alignment.Right: @@ -291,7 +297,7 @@ namespace Crow return; instStack = IFace.CreateITorFromIMLFragment (@""); instSplit = IFace.CreateITorFromIMLFragment (@""); - instSpacer = IFace.CreateITorFromIMLFragment (@""); + instSpacer = IFace.CreateITorFromIMLFragment (@""); } } diff --git a/src/GraphicObjects/DockWindow.cs b/src/GraphicObjects/DockWindow.cs index 4c71c92d..7924588e 100644 --- a/src/GraphicObjects/DockWindow.cs +++ b/src/GraphicObjects/DockWindow.cs @@ -35,7 +35,7 @@ namespace Crow } #endregion - int undockThreshold = 10; + int undockThreshold = 4; bool isDocked = false; Alignment docking = Alignment.Center; diff --git a/src/GraphicObjects/Docker.cs b/src/GraphicObjects/Docker.cs index dfd386aa..f61269d3 100644 --- a/src/GraphicObjects/Docker.cs +++ b/src/GraphicObjects/Docker.cs @@ -43,7 +43,7 @@ namespace Crow #endregion //GenericStack rootStack = null; - DockStack stack = null; + public DockStack SubStack = null; int dockingThreshold; List windows = new List(); @@ -77,10 +77,10 @@ namespace Crow DockWindow dw = IFace.DragAndDropOperation.DragSource as DockWindow; if (!dw.IsDocked) dw.MoveAndResize (e.XDelta, e.YDelta); - if (stack == null) { - stack = new DockStack (IFace); - InsertChild (0, stack); - stack.LogicalParent = this; + if (SubStack == null) { + SubStack = new DockStack (IFace); + InsertChild (0, SubStack); + SubStack.LogicalParent = this; } } base.onMouseMove (sender, e); diff --git a/src/GraphicObjects/GenericStack.cs b/src/GraphicObjects/GenericStack.cs index 2df681e4..0dbaedd1 100644 --- a/src/GraphicObjects/GenericStack.cs +++ b/src/GraphicObjects/GenericStack.cs @@ -235,6 +235,7 @@ namespace Crow base.RemoveChild (child); if (child == stretchedGO) { stretchedGO = null; + RegisterForLayouting (LayoutingType.Sizing); return; } if (Orientation == Orientation.Horizontal) { @@ -244,9 +245,6 @@ namespace Crow contentSize.Height -= child.LastSlots.Height; adjustStretchedGo (LayoutingType.Height); } - - -// RegisterForLayouting (LayoutingType.ArrangeChildren); } } } diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index db49832e..a70f04a1 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -340,6 +340,7 @@ namespace Crow parentRWLock.EnterWriteLock(); parent = value; + Slot = default(Rectangle); parentRWLock.ExitWriteLock(); onParentChanged (this, e); diff --git a/src/Interface.cs b/src/Interface.cs index 4b780731..ceeb2aa8 100644 --- a/src/Interface.cs +++ b/src/Interface.cs @@ -469,7 +469,7 @@ namespace Crow { _hoverWidget.IsHover = true; #if DEBUG_FOCUS - Debug.WriteLine("Hover => " + _activeWidget.ToString()); + Debug.WriteLine("Hover => " + _hoverWidget.ToString()); }else Debug.WriteLine("Hover => null"); #else -- 2.47.3