aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/Interface.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Interface.cs')
-rw-r--r--src/Interface.cs22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/Interface.cs b/src/Interface.cs
index 73f44a6a..d01d2e8f 100644
--- a/src/Interface.cs
+++ b/src/Interface.cs
@@ -572,8 +572,15 @@ namespace Crow
int i = 0;
while (i < idxhw) {
if (GraphicTree [i].MouseIsIn (e.Position)) {
- //set evtarg to null to force mouseLeave without checking mouse pos
- HoverWidget.onMouseLeave (HoverWidget, null);
+ 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;
}
@@ -587,8 +594,15 @@ namespace Crow
return true;
} else {
HoverWidget.onMouseLeave (HoverWidget, e);
- if (HoverWidget != null)
- return true;
+ //seek upward from last focused graph obj's
+ while (HoverWidget.LogicalParent as GraphicObject != null) {
+ HoverWidget = HoverWidget.LogicalParent as GraphicObject;
+ if (HoverWidget.MouseIsIn (e.Position)) {
+ HoverWidget.checkHoverWidget (e);
+ return true;
+ } else
+ HoverWidget.onMouseLeave (HoverWidget, e);
+ }
}
}