diff options
| author | j-p <jp.bruyere@live.be> | 2016-09-01 13:22:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-09-01 13:22:56 +0200 |
| commit | 4b97ce36188afb1b08c1d5836f57fa73a1adab6a (patch) | |
| tree | 337845f6e2156c6e408b5f7f1ce9d8e5710036aa /src/Interface.cs | |
| parent | d4bc4a1aba5df1d5a93474259c5d5a52f993d475 (diff) | |
| parent | 1a08acb6ec65508b5247b554cda403a9e51d4eb4 (diff) | |
Merge pull request #29 from jpbruyere/TemplatedGroup
Templated group, proportional splitter, menus
Diffstat (limited to 'src/Interface.cs')
| -rw-r--r-- | src/Interface.cs | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/src/Interface.cs b/src/Interface.cs index 0d97685e..d01d2e8f 100644 --- a/src/Interface.cs +++ b/src/Interface.cs @@ -467,7 +467,7 @@ namespace Crow g.Parent = this; GraphicTree.Insert (0, g); g.RegisteredLayoutings = LayoutingType.None; - g.RegisterForLayouting (LayoutingType.Sizing); + g.RegisterForLayouting (LayoutingType.Sizing | LayoutingType.ArrangeChildren); } public void DeleteWidget(GraphicObject g) { @@ -572,7 +572,15 @@ namespace Crow int i = 0; while (i < idxhw) { if (GraphicTree [i].MouseIsIn (e.Position)) { - HoverWidget.onMouseLeave (this, e); + while (HoverWidget != null) { + if (HoverWidget is Popper) { + if ((HoverWidget as Popper).Content == GraphicTree[i]) + break; + } + HoverWidget.onMouseLeave (HoverWidget, e); + HoverWidget = HoverWidget.LogicalParent as GraphicObject; + } + GraphicTree [i].checkHoverWidget (e); return true; } @@ -585,27 +593,29 @@ namespace Crow HoverWidget.checkHoverWidget (e); return true; } else { - HoverWidget.onMouseLeave (this, e); + HoverWidget.onMouseLeave (HoverWidget, e); //seek upward from last focused graph obj's - while (HoverWidget.Parent as GraphicObject != null) { - HoverWidget = HoverWidget.Parent as GraphicObject; + while (HoverWidget.LogicalParent as GraphicObject != null) { + HoverWidget = HoverWidget.LogicalParent as GraphicObject; if (HoverWidget.MouseIsIn (e.Position)) { HoverWidget.checkHoverWidget (e); return true; } else - HoverWidget.onMouseLeave (this, e); + HoverWidget.onMouseLeave (HoverWidget, e); } } } //top level graphic obj's parsing - for (int i = 0; i < GraphicTree.Count; i++) { - GraphicObject g = GraphicTree[i]; - if (g.MouseIsIn (e.Position)) { - g.checkHoverWidget (e); - if (g is Window) - PutOnTop (g); - return true; + lock (GraphicTree) { + for (int i = 0; i < GraphicTree.Count; i++) { + GraphicObject g = GraphicTree [i]; + if (g.MouseIsIn (e.Position)) { + g.checkHoverWidget (e); + if (g is Window) + PutOnTop (g); + return true; + } } } HoverWidget = null; |