diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2015-09-07 09:08:12 +0200 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2015-09-07 09:08:12 +0200 |
| commit | 167e50bf7c4af84a6793326e39b0d3e41d4eb8bf (patch) | |
| tree | 57a9239773e3eb0b60e648119ddb782db92439f3 /src | |
| parent | bacf29e47409c20292b6861e6ef40bfc2119eb7b (diff) | |
Focus improvments:
New function (checkHoverWidget) to check most inner control under the
mouse, than bubble onMouseMove through the parents
Diffstat (limited to 'src')
| -rw-r--r-- | src/GraphicObjects/GraphicObject.cs | 23 | ||||
| -rw-r--r-- | src/GraphicObjects/Group.cs | 16 | ||||
| -rw-r--r-- | src/GraphicObjects/PrivateContainer.cs | 8 | ||||
| -rw-r--r-- | src/GraphicObjects/Scroller.cs | 4 | ||||
| -rwxr-xr-x | src/OpenTKGameWindow.cs | 8 |
5 files changed, 30 insertions, 29 deletions
diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index e1972669..d74442d7 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -661,20 +661,23 @@ namespace go {
return Visible ? ScreenCoordinates(Slot).ContainsOrIsEqual (m) : false;
}
- internal virtual void checkHoverWidget(Point m)
+ internal virtual void checkHoverWidget(MouseMoveEventArgs e)
{
-
- }
- public virtual void onMouseMove(object sender, MouseMoveEventArgs e)
- {
- //ILayoutable w = sender as ILayoutable;
-
if (TopContainer.hoverWidget != this) {
TopContainer.hoverWidget = this;
- onMouseEnter (sender, e);
+ onMouseEnter (this, e);
}
-
- MouseMove.Raise (this, e);
+
+ this.onMouseMove (this, e);
+ }
+ public virtual void onMouseMove(object sender, MouseMoveEventArgs e)
+ {
+ //bubble event to the top
+ GraphicObject p = Parent as GraphicObject;
+ if (p != null)
+ p.onMouseMove(sender,e);
+
+ MouseMove.Raise (sender, e);
}
public virtual void onMouseButtonUp(object sender, MouseButtonEventArgs e){
if (MouseIsIn (e.Position))
diff --git a/src/GraphicObjects/Group.cs b/src/GraphicObjects/Group.cs index e2d64c89..41294231 100644 --- a/src/GraphicObjects/Group.cs +++ b/src/GraphicObjects/Group.cs @@ -215,17 +215,17 @@ namespace go #region Mouse handling
- public override void onMouseMove (object sender, OpenTK.Input.MouseMoveEventArgs e)
+ internal override void checkHoverWidget (OpenTK.Input.MouseMoveEventArgs e)
{
foreach (GraphicObject g in Children)
- {
+ {
if (g.MouseIsIn(e.Position))
- {
- g.onMouseMove (sender, e);
- return;
- }
- }
- base.onMouseMove (sender, e);
+ {
+ g.checkHoverWidget (e);
+ return;
+ }
+ }
+ base.checkHoverWidget (e);
}
#endregion
diff --git a/src/GraphicObjects/PrivateContainer.cs b/src/GraphicObjects/PrivateContainer.cs index f863fae8..01502bd4 100644 --- a/src/GraphicObjects/PrivateContainer.cs +++ b/src/GraphicObjects/PrivateContainer.cs @@ -146,14 +146,12 @@ namespace go #endregion #region Mouse handling - public override void onMouseMove (object sender, MouseMoveEventArgs e) + internal override void checkHoverWidget (MouseMoveEventArgs e) { - base.onMouseMove (sender, e); - + base.checkHoverWidget (e); if (child != null) if (child.MouseIsIn (e.Position)) - child.onMouseMove (sender, e); - + child.checkHoverWidget (e); } #endregion } diff --git a/src/GraphicObjects/Scroller.cs b/src/GraphicObjects/Scroller.cs index a413da94..8996c464 100644 --- a/src/GraphicObjects/Scroller.cs +++ b/src/GraphicObjects/Scroller.cs @@ -118,10 +118,10 @@ namespace go {
return Visible ? base.ScreenCoordinates(Slot).ContainsOrIsEqual (m) : false;
}
- public override void onMouseMove (object sender, MouseMoveEventArgs e)
+ internal override void checkHoverWidget (MouseMoveEventArgs e)
{
Point m = e.Position - new Point ((int)ScrollX, (int)ScrollY);
- base.onMouseMove (sender, new MouseMoveEventArgs(m.X,m.Y,e.XDelta,e.YDelta));
+ base.checkHoverWidget (new MouseMoveEventArgs(m.X,m.Y,e.XDelta,e.YDelta));
}
public override void onMouseWheel (object sender, MouseWheelEventArgs e)
{
diff --git a/src/OpenTKGameWindow.cs b/src/OpenTKGameWindow.cs index d7cecd4e..59e02cf1 100755 --- a/src/OpenTKGameWindow.cs +++ b/src/OpenTKGameWindow.cs @@ -385,13 +385,13 @@ namespace go {
if (_activeWidget != null) {
//send move evt even if mouse move outside bounds
- _activeWidget.onMouseMove (this, e);
+ _activeWidget.onMouseMove (_activeWidget, e);
return;
}
if (_hoverWidget != null) {
if (_hoverWidget.MouseIsIn (e.Position)) {
- _hoverWidget.onMouseMove (this, e);
+ _hoverWidget.checkHoverWidget (e);
return;
} else {
_hoverWidget.onMouseLeave (this, e);
@@ -399,7 +399,7 @@ namespace go while (_hoverWidget.Parent as GraphicObject!=null) {
_hoverWidget = _hoverWidget.Parent as GraphicObject;
if (_hoverWidget.MouseIsIn (e.Position)) {
- _hoverWidget.onMouseMove (this, e);
+ _hoverWidget.checkHoverWidget (e);
return;
} else
_hoverWidget.onMouseLeave (this, e);
@@ -411,7 +411,7 @@ namespace go for (int i = 0; i < GraphicObjects.Count; i++) {
GraphicObject g = GraphicObjects[i];
if (g.MouseIsIn (e.Position)) {
- g.onMouseMove (this, e);
+ g.checkHoverWidget (e);
PutOnTop (g);
return;
}
|