aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/GraphicObjects
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-03-04 22:26:24 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2018-03-04 22:26:24 +0100
commit8a535547c868dfeb38143e5836b02f9ac4f56354 (patch)
tree91915fcc7307d77653b15673ab9d88bb43a99a41 /src/GraphicObjects
parenta31ef5c25faab8bb10fd458eac1a9be86a1a1aee (diff)
docker debug
Diffstat (limited to 'src/GraphicObjects')
-rw-r--r--src/GraphicObjects/DockStack.cs68
-rw-r--r--src/GraphicObjects/DockWindow.cs29
-rw-r--r--src/GraphicObjects/Docker.cs9
3 files changed, 44 insertions, 62 deletions
diff --git a/src/GraphicObjects/DockStack.cs b/src/GraphicObjects/DockStack.cs
index 2c99a8b6..79643b47 100644
--- a/src/GraphicObjects/DockStack.cs
+++ b/src/GraphicObjects/DockStack.cs
@@ -113,13 +113,14 @@ namespace Crow
dw.DockingPosition = Alignment.Top;
else if (lm.Y > r.Bottom - vTreshold)
dw.DockingPosition = Alignment.Bottom;
- else {
+ else if (this.Children.Contains (rootDock.CenterDockedObj) && !(rootDock.CenterDockedObj is DockWindow)) {
r.Inflate (-r.Width / 3, -r.Height / 3);
- if (r.ContainsOrIsEqual(lm))
+ if (r.ContainsOrIsEqual (lm))
dw.DockingPosition = Alignment.Center;
else
dw.DockingPosition = Alignment.Undefined;
- }
+ } else
+ dw.DockingPosition = Alignment.Undefined;
if (curDockPos != dw.DockingPosition)
RegisterForGraphicUpdate ();
@@ -213,7 +214,7 @@ namespace Crow
RemoveChild(dw);
if (rootDock.CenterDockedObj == dw) {
- rootDock.CenterDockedObj = new GraphicObject (IFace) { IsEnabled = false, Background = Color.AmberSaeEce.AdjustAlpha(0.3) };
+ rootDock.CenterDockedObj = new GraphicObject (IFace) { IsEnabled = false };
InsertChild (idx, rootDock.CenterDockedObj);
SubStack = rootDock.CenterDockedObj;
}else if (dw.DockingPosition == Alignment.Left || dw.DockingPosition == Alignment.Top)
@@ -234,27 +235,6 @@ namespace Crow
dsp.InsertChild (idx, SubStack);
dsp.SubStack = SubStack;
return;
-
-// Docker dk = Parent as Docker;
-// dk.RemoveChild (this);
-// dk.AddChild (SubStack);
-// dk.SubStack = SubStack;
-
-// 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.InsertChild (i, g);
-// dsp.SubStack = g;
}
public void Dock(DockWindow dw){
Splitter splitter = instSplit.CreateInstance<Splitter> ();
@@ -264,21 +244,41 @@ namespace Crow
int hTreshold = r.Width / dockingDiv;
DockStack activeStack = this;
-
+ Console.WriteLine ("******* Dockingtack {0}", this.Name);
if (Children.Count == 1) {
activeStack = this;
Orientation = dw.DockingPosition.GetOrientation ();
- }else if (dw.DockingPosition.GetOrientation() != Orientation) {
- int i = Children.IndexOf (rootDock.CenterDockedObj);
- RemoveChild (rootDock.CenterDockedObj);
+ }else if (dw.DockingPosition.GetOrientation() != Orientation) {
activeStack = instStack.CreateInstance<DockStack> ();
- activeStack.SubStack = rootDock.CenterDockedObj;
- SubStack = activeStack;
- InsertChild(i, activeStack);
- activeStack.AddChild (rootDock.CenterDockedObj);
+ int ci = Children.IndexOf (rootDock.CenterDockedObj);
+ if (ci <0 ){
+ DockStack dsp = Parent as DockStack;
+ if (dsp != null) {
+ int idx = dsp.Children.IndexOf (this);
+ dsp.RemoveChild (this);
+ dsp.SubStack = activeStack;
+ dsp.InsertChild (idx, activeStack);
+ activeStack.SubStack = this;
+ activeStack.AddChild (this);
+ } else {
+ Docker dk = Parent as Docker;
+ dk.RemoveChild (this);
+ dk.InsertChild (0, activeStack);
+ dk.SubStack = activeStack;
+ activeStack.AddChild (this);
+ activeStack.SubStack = this;
+ }
+ }else{
+ int i = Children.IndexOf (SubStack);
+ RemoveChild (SubStack);
+ activeStack.SubStack = SubStack;
+ SubStack = activeStack;
+ InsertChild(i, activeStack);
+ activeStack.AddChild (activeStack.SubStack);
+ }
activeStack.Orientation = dw.DockingPosition.GetOrientation ();
}
-
+ Console.WriteLine ("Docking {0} in {1}", dw.Name, activeStack.Name);
switch (dw.DockingPosition) {
case Alignment.Top:
dw.Height = vTreshold;
diff --git a/src/GraphicObjects/DockWindow.cs b/src/GraphicObjects/DockWindow.cs
index c7934114..f333f6c4 100644
--- a/src/GraphicObjects/DockWindow.cs
+++ b/src/GraphicObjects/DockWindow.cs
@@ -87,32 +87,6 @@ namespace Crow
return Slot.ContainsOrIsEqual(m);
}
-// public override void OnLayoutChanges (LayoutingType layoutType)
-// {
-// base.OnLayoutChanges (layoutType);
-//
-// if (isDocked)
-// return;
-
-// Docker dv = Parent as Docker;
-// if (dv == null)
-// return;
-//
-// Rectangle dvCliRect = dv.ClientRectangle;
-//
-// if (layoutType == LayoutingType.X) {
-// if (Slot.X < dv.DockingThreshold)
-// dock (Alignment.Left);
-// else if (Slot.Right > dvCliRect.Width - dv.DockingThreshold)
-// dock (Alignment.Right);
-// }else if (layoutType == LayoutingType.Y) {
-// if (Slot.Y < dv.DockingThreshold)
-// dock (Alignment.Top);
-// else if (Slot.Bottom > dvCliRect.Height - dv.DockingThreshold)
-// dock (Alignment.Bottom);
-// }
-// }
-//
public override void onMouseMove (object sender, MouseMoveEventArgs e)
{
lastMousePos = e.Position;
@@ -172,9 +146,10 @@ namespace Crow
void dock (DockStack target){
if (RootDock.CenterDockedObj is DockWindow && DockingPosition == Alignment.Center)
return;
+
lock (IFace.UpdateMutex) {
IsDocked = true;
- undockingMousePosOrig = lastMousePos;
+ //undockingMousePosOrig = lastMousePos;
savedSlot = this.LastPaintedSlot;
wasResizable = Resizable;
Resizable = false;
diff --git a/src/GraphicObjects/Docker.cs b/src/GraphicObjects/Docker.cs
index f189907c..3803d8dd 100644
--- a/src/GraphicObjects/Docker.cs
+++ b/src/GraphicObjects/Docker.cs
@@ -61,7 +61,7 @@ namespace Crow
protected override void onInitialized (object sender, EventArgs e)
{
base.onInitialized (sender, e);
- CenterDockedObj = new GraphicObject (IFace) { IsEnabled = false, Background = Color.Cobalt };
+ CenterDockedObj = new GraphicObject (IFace) { IsEnabled = false };
}
public override void AddChild (GraphicObject g)
@@ -69,6 +69,13 @@ namespace Crow
base.AddChild (g);
g.LogicalParent = this;
}
+ public override void RemoveChild (GraphicObject child)
+ {
+ lock (IFace.UpdateMutex) {
+ RegisterClip (ScreenCoordinates (LastPaintedSlot));
+ }
+ base.RemoveChild (child);
+ }
public override void onMouseMove (object sender, MouseMoveEventArgs e)
{