diff --git a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor
index 3dd98f8cd3..3fe4c299cf 100644
--- a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor
+++ b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor
@@ -1,14 +1,12 @@
+ onkeyup="@OnKeyUp"
+ onpointerdown="@OnPointerDown"
+ onpointerup="@OnPointerUp"
+ onpointermove="@OnPointerMove">
diff --git a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs
index be58d9d49c..766aeb6d19 100644
--- a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs
+++ b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs
@@ -56,90 +56,91 @@ namespace Avalonia.Web.Blazor
{
return _nativeControlHost ?? throw new InvalidOperationException("Blazor View wasn't initialized yet");
}
-
- private void OnTouchStart(TouchEventArgs e)
+
+ private void OnTouchCancel(TouchEventArgs e)
{
foreach (var touch in e.ChangedTouches)
{
- _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchBegin, new Point(touch.ClientX, touch.ClientY),
+ _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchCancel, new Point(touch.ClientX, touch.ClientY),
GetModifiers(e), touch.Identifier);
}
}
- private void OnTouchEnd(TouchEventArgs e)
+ private void OnTouchMove(TouchEventArgs e)
{
foreach (var touch in e.ChangedTouches)
{
- _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchEnd, new Point(touch.ClientX, touch.ClientY),
+ _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchUpdate, new Point(touch.ClientX, touch.ClientY),
GetModifiers(e), touch.Identifier);
}
}
- private void OnTouchCancel(TouchEventArgs e)
+ private void OnPointerMove(Microsoft.AspNetCore.Components.Web.PointerEventArgs e)
{
- foreach (var touch in e.ChangedTouches)
+ if (e.PointerType == "mouse")
{
- _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchCancel, new Point(touch.ClientX, touch.ClientY),
- GetModifiers(e), touch.Identifier);
+ _topLevelImpl.RawMouseEvent(RawPointerEventType.Move, new Point(e.ClientX, e.ClientY), GetModifiers(e));
}
}
- private void OnTouchMove(TouchEventArgs e)
+ private void OnPointerUp(Microsoft.AspNetCore.Components.Web.PointerEventArgs e)
{
- foreach (var touch in e.ChangedTouches)
+ if (e.PointerType == "touch")
{
- _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchUpdate, new Point(touch.ClientX, touch.ClientY),
- GetModifiers(e), touch.Identifier);
+ _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchEnd, new Point(e.ClientX, e.ClientY),
+ GetModifiers(e), e.PointerId);
}
- }
-
- private void OnMouseMove(MouseEventArgs e)
- {
- _topLevelImpl.RawMouseEvent(RawPointerEventType.Move, new Point(e.ClientX, e.ClientY), GetModifiers(e));
- }
+ else if (e.PointerType == "mouse")
+ {
+ RawPointerEventType type = default;
- private void OnMouseUp(MouseEventArgs e)
- {
- RawPointerEventType type = default;
+ switch (e.Button)
+ {
+ case 0:
+ type = RawPointerEventType.LeftButtonUp;
+ break;
- switch (e.Button)
- {
- case 0:
- type = RawPointerEventType.LeftButtonUp;
- break;
+ case 1:
+ type = RawPointerEventType.MiddleButtonUp;
+ break;
- case 1:
- type = RawPointerEventType.MiddleButtonUp;
- break;
+ case 2:
+ type = RawPointerEventType.RightButtonUp;
+ break;
+ }
- case 2:
- type = RawPointerEventType.RightButtonUp;
- break;
+ _topLevelImpl.RawMouseEvent(type, new Point(e.ClientX, e.ClientY), GetModifiers(e));
}
-
- _topLevelImpl.RawMouseEvent(type, new Point(e.ClientX, e.ClientY), GetModifiers(e));
}
- private void OnMouseDown(MouseEventArgs e)
+ private void OnPointerDown(Microsoft.AspNetCore.Components.Web.PointerEventArgs e)
{
- RawPointerEventType type = default;
-
- switch (e.Button)
+ if (e.PointerType == "touch")
+ {
+ _topLevelImpl.RawTouchEvent(RawPointerEventType.TouchBegin, new Point(e.ClientX, e.ClientY),
+ GetModifiers(e), e.PointerId);
+ }
+ else if (e.PointerType == "mouse")
{
- case 0:
- type = RawPointerEventType.LeftButtonDown;
- break;
+ RawPointerEventType type = default;
+
+ switch (e.Button)
+ {
+ case 0:
+ type = RawPointerEventType.LeftButtonDown;
+ break;
- case 1:
- type = RawPointerEventType.MiddleButtonDown;
- break;
+ case 1:
+ type = RawPointerEventType.MiddleButtonDown;
+ break;
- case 2:
- type = RawPointerEventType.RightButtonDown;
- break;
- }
+ case 2:
+ type = RawPointerEventType.RightButtonDown;
+ break;
+ }
- _topLevelImpl.RawMouseEvent(type, new Point(e.ClientX, e.ClientY), GetModifiers(e));
+ _topLevelImpl.RawMouseEvent(type, new Point(e.ClientX, e.ClientY), GetModifiers(e));
+ }
}
private void OnWheel(WheelEventArgs e)
@@ -189,7 +190,7 @@ namespace Avalonia.Web.Blazor
return modifiers;
}
- private static RawInputModifiers GetModifiers(MouseEventArgs e)
+ private static RawInputModifiers GetModifiers(Microsoft.AspNetCore.Components.Web.PointerEventArgs e)
{
var modifiers = RawInputModifiers.None;