Browse Source

WASM: use handled for preventDefault on keydown and up.

pull/8928/head
Dan Walmsley 4 years ago
parent
commit
c282f75c35
  1. 6
      src/Web/Avalonia.Web.Blazor/AvaloniaView.razor
  2. 6
      src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs
  3. 16
      src/Web/Avalonia.Web.Blazor/RazorViewTopLevelImpl.cs

6
src/Web/Avalonia.Web.Blazor/AvaloniaView.razor

@ -3,9 +3,9 @@
tabindex="0" oncontextmenu="return false;" tabindex="0" oncontextmenu="return false;"
@onwheel="OnWheel" @onwheel="OnWheel"
@onkeydown="OnKeyDown" @onkeydown="OnKeyDown"
@onkeydown:preventDefault="true"
@onkeyup="OnKeyUp" @onkeyup="OnKeyUp"
@onkeyup:preventDefault="true" @onkeyup:preventDefault="@KeyPreventDefault"
@onkeydown:preventDefault="@KeyPreventDefault"
@onpointerdown="OnPointerDown" @onpointerdown="OnPointerDown"
@onpointerup="OnPointerUp" @onpointerup="OnPointerUp"
@onpointermove="OnPointerMove" @onpointermove="OnPointerMove"
@ -20,8 +20,6 @@
onpaste="return false;" onpaste="return false;"
oncopy="return false;" oncopy="return false;"
oncut="return false;" oncut="return false;"
@onkeydown:preventDefault="true"
@onkeyup:preventDefault="true"
autocapitalize="none"/> autocapitalize="none"/>
</div> </div>

6
src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs

@ -63,6 +63,8 @@ namespace Avalonia.Web.Blazor
} }
} }
public bool KeyPreventDefault { get; set; }
internal INativeControlHostImpl GetNativeControlHostImpl() internal INativeControlHostImpl GetNativeControlHostImpl()
{ {
return _nativeControlHost ?? throw new InvalidOperationException("Blazor View wasn't initialized yet"); return _nativeControlHost ?? throw new InvalidOperationException("Blazor View wasn't initialized yet");
@ -203,12 +205,12 @@ namespace Avalonia.Web.Blazor
private void OnKeyDown(KeyboardEventArgs e) private void OnKeyDown(KeyboardEventArgs e)
{ {
_topLevelImpl.RawKeyboardEvent(RawKeyEventType.KeyDown, e.Code, e.Key, GetModifiers(e)); KeyPreventDefault = _topLevelImpl.RawKeyboardEvent(RawKeyEventType.KeyDown, e.Code, e.Key, GetModifiers(e));
} }
private void OnKeyUp(KeyboardEventArgs e) private void OnKeyUp(KeyboardEventArgs e)
{ {
_topLevelImpl.RawKeyboardEvent(RawKeyEventType.KeyUp, e.Code, e.Key, GetModifiers(e)); KeyPreventDefault = _topLevelImpl.RawKeyboardEvent(RawKeyEventType.KeyUp, e.Code, e.Key, GetModifiers(e));
} }
private void OnFocus(FocusEventArgs e) private void OnFocus(FocusEventArgs e)

16
src/Web/Avalonia.Web.Blazor/RazorViewTopLevelImpl.cs

@ -113,22 +113,32 @@ namespace Avalonia.Web.Blazor
} }
} }
public void RawKeyboardEvent(RawKeyEventType type, string code, string key, RawInputModifiers modifiers) public bool RawKeyboardEvent(RawKeyEventType type, string code, string key, RawInputModifiers modifiers)
{ {
if (Keycodes.KeyCodes.TryGetValue(code, out var avkey)) if (Keycodes.KeyCodes.TryGetValue(code, out var avkey))
{ {
if (_inputRoot is { }) if (_inputRoot is { })
{ {
Input?.Invoke(new RawKeyEventArgs(KeyboardDevice, Timestamp, _inputRoot, type, avkey, modifiers)); var args = new RawKeyEventArgs(KeyboardDevice, Timestamp, _inputRoot, type, avkey, modifiers);
Input?.Invoke(args);
return args.Handled;
} }
} }
else if (Keycodes.KeyCodes.TryGetValue(key, out avkey)) else if (Keycodes.KeyCodes.TryGetValue(key, out avkey))
{ {
if (_inputRoot is { }) if (_inputRoot is { })
{ {
Input?.Invoke(new RawKeyEventArgs(KeyboardDevice, Timestamp, _inputRoot, type, avkey, modifiers)); var args = new RawKeyEventArgs(KeyboardDevice, Timestamp, _inputRoot, type, avkey, modifiers);
Input?.Invoke(args);
return args.Handled;
} }
} }
return false;
} }
public void RawTextEvent(string text) public void RawTextEvent(string text)

Loading…
Cancel
Save