Browse Source

change name and check invalidate rect

pull/2067/head
ahopper 8 years ago
parent
commit
7c5802efcf
  1. 6
      src/Avalonia.Controls/TopLevel.cs
  2. 2
      src/Avalonia.Input/IPointerDevice.cs
  3. 19
      src/Avalonia.Input/MouseDevice.cs

6
src/Avalonia.Controls/TopLevel.cs

@ -230,7 +230,7 @@ namespace Avalonia.Controls
void IRenderRoot.Invalidate(Rect rect) void IRenderRoot.Invalidate(Rect rect)
{ {
PlatformImpl?.Invalidate(rect); PlatformImpl?.Invalidate(rect);
UpdatePointerOver(); UpdatePointerOver(rect);
} }
/// <inheritdoc/> /// <inheritdoc/>
@ -351,9 +351,9 @@ namespace Avalonia.Controls
_inputManager.ProcessInput(e); _inputManager.ProcessInput(e);
} }
private void UpdatePointerOver() private void UpdatePointerOver(Rect rect)
{ {
(this as IInputRoot).MouseDevice.LayoutUpdated(this); (this as IInputRoot).MouseDevice.SceneInvalidated(this, rect);
} }
} }
} }

2
src/Avalonia.Input/IPointerDevice.cs

@ -13,6 +13,6 @@ namespace Avalonia.Input
Point GetPosition(IVisual relativeTo); Point GetPosition(IVisual relativeTo);
void LayoutUpdated(IInputRoot root); void SceneInvalidated(IInputRoot root, Rect rect);
} }
} }

19
src/Avalonia.Input/MouseDevice.cs

@ -104,16 +104,21 @@ namespace Avalonia.Input
ProcessRawEvent(margs); ProcessRawEvent(margs);
} }
public void LayoutUpdated(IInputRoot root) public void SceneInvalidated(IInputRoot root, Rect rect)
{ {
if (Captured == null) var clientPoint = root.PointToClient(Position);
if (rect.Contains(clientPoint))
{ {
SetPointerOver(this, root, root.PointToClient(Position)); if (Captured == null)
{
SetPointerOver(this, root, clientPoint);
}
else
{
SetPointerOver(this, root, Captured);
}
} }
else
{
SetPointerOver(this, root, Captured);
}
} }
private void ProcessRawEvent(RawMouseEventArgs e) private void ProcessRawEvent(RawMouseEventArgs e)

Loading…
Cancel
Save