diff --git a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs index 973adf99e5..7a386d5683 100644 --- a/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs +++ b/src/Web/Avalonia.Web.Blazor/AvaloniaView.razor.cs @@ -349,12 +349,12 @@ namespace Avalonia.Web.Blazor IsComposing = true; break; case WebCompositionEventArgs.WebCompositionEventType.Update: - _client?.SetPreeditText(e.Data); + _client.SetPreeditText(e.Data); break; case WebCompositionEventArgs.WebCompositionEventType.End: IsComposing = false; - _client?.SetPreeditText(null); - _topLevelImpl.RawTextEvent(e.Data); + _client.SetPreeditText(null); + _topLevelImpl.RawTextEvent(e.Data); break; } } @@ -467,7 +467,7 @@ namespace Avalonia.Web.Blazor private void SurroundingTextChanged(object? sender, EventArgs e) { - if(_client != null && IsComposing) + if(_client != null) { var surroundingText = _client.SurroundingText; @@ -480,6 +480,14 @@ namespace Avalonia.Web.Blazor var bounds = new PixelRect((int)rect.X, (int) rect.Y, (int) rect.Width, (int) rect.Height); _inputHelper?.SetBounds(bounds); + + if (_client != null && _client.SupportsSurroundingText && !IsComposing) + { + var surroundingText = _client.SurroundingText; + + _inputHelper?.SetSurroundingText(surroundingText.Text, surroundingText.AnchorOffset, surroundingText.CursorOffset); + } + _inputHelper?.Focus(); } diff --git a/src/Web/Avalonia.Web.Blazor/Interop/InputHelperInterop.cs b/src/Web/Avalonia.Web.Blazor/Interop/InputHelperInterop.cs index 63c3348539..debe23e302 100644 --- a/src/Web/Avalonia.Web.Blazor/Interop/InputHelperInterop.cs +++ b/src/Web/Avalonia.Web.Blazor/Interop/InputHelperInterop.cs @@ -91,11 +91,6 @@ namespace Avalonia.Web.Blazor.Interop var args = new WebInputEventArgs(type, data); InputEvent?.Invoke(this, args); - - if (args.Handled) - { - SetSurroundingText("", 0, 0); - } } public void Clear() => _module.Invoke(ClearSymbol, _inputElement);