From a37319186d551c5146a521ebd2ea2567164a2bca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jean-Philippe=20Bruy=C3=A8re?= Date: Sun, 18 Mar 2018 15:33:42 +0100 Subject: [PATCH] debug dockwin bug --- Templates/TreeView.template | 4 ++-- src/GraphicObjects/DockStack.cs | 24 +++++++++++++----------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Templates/TreeView.template b/Templates/TreeView.template index 31514fce..9c18120e 100644 --- a/Templates/TreeView.template +++ b/Templates/TreeView.template @@ -10,7 +10,7 @@ Name="scrollbar1" LargeIncrement="{../scroller1.PageHeight}" SmallIncrement="30" CursorSize="{../scroller1.ChildHeightRatio}" - Value="{../scroller1.ScrollY}" - Maximum="{../scroller1.MaximumScroll}" + Value="{²../scroller1.ScrollY}" + Maximum="{../scroller1.MaxScrollY}" Width="14" Orientation="Vertical"/> diff --git a/src/GraphicObjects/DockStack.cs b/src/GraphicObjects/DockStack.cs index cdd43d80..ae8b9c89 100644 --- a/src/GraphicObjects/DockStack.cs +++ b/src/GraphicObjects/DockStack.cs @@ -57,18 +57,19 @@ namespace Crow Group p = Parent as Group; if (p != null) { - lock (p.Children) { - for (int i = p.Children.Count - 1; i >= 0; i--) { - if (p.Children [i] == this) - break; - if (p.Children [i].IsDragged) - continue; - if (p.Children [i].Slot.ContainsOrIsEqual (m)) { - return false; - } + childrenRWLock.EnterReadLock (); + for (int i = p.Children.Count - 1; i >= 0; i--) { + if (p.Children [i] == this) + break; + if (p.Children [i].IsDragged) + continue; + if (p.Children [i].Slot.ContainsOrIsEqual (m)) { + childrenRWLock.ExitReadLock (); + return false; } } } + childrenRWLock.ExitReadLock (); return Slot.ContainsOrIsEqual(m); } @@ -105,10 +106,8 @@ namespace Crow if (IsDropTarget) { DockWindow dw = IFace.DragAndDropOperation.DragSource as DockWindow; if (dw.IsDocked) { - //if (!dw.CheckUndock (e.Position)) { base.onMouseMove (sender, e); return; - //} } Alignment curDockPos = dw.DockingPosition; @@ -172,6 +171,9 @@ namespace Crow } protected override void onDragLeave (object sender, DragDropEventArgs e) { + DockWindow dw = e.DragSource as DockWindow; + if (dw != null) + dw.DockingPosition = Alignment.Undefined; base.onDragLeave (sender, e); RegisterForGraphicUpdate (); } -- 2.47.3