From 347b6a11a0f883c76221457996371e3d88bbd2a6 Mon Sep 17 00:00:00 2001 From: Benedikt Stebner Date: Fri, 17 Mar 2023 12:37:02 +0100 Subject: [PATCH] Translate cursor rect relative to the visual root --- native/Avalonia.Native/src/OSX/AvnView.mm | 19 +++++++------------ .../TextBoxTextInputMethodClient.cs | 6 ++++-- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/AvnView.mm b/native/Avalonia.Native/src/OSX/AvnView.mm index 5440b76bfe..fdc144e3a5 100644 --- a/native/Avalonia.Native/src/OSX/AvnView.mm +++ b/native/Avalonia.Native/src/OSX/AvnView.mm @@ -598,13 +598,13 @@ { [[_markedText mutableString] setString:@""]; + [[self inputContext] discardMarkedText]; + if(!_parent->InputMethod->IsActive()){ return; } _parent->InputMethod->Client->SetPreeditText(nullptr); - - [[self inputContext] discardMarkedText]; } - (NSArray *)validAttributesForMarkedText @@ -619,17 +619,12 @@ - (void)insertText:(id)string replacementRange:(NSRange)replacementRange { - //[_text replaceCharactersInRange:replacementRange withString:string]; - [self unmarkText]; - - //if(!_lastKeyHandled) - //{ - if(_parent != nullptr) - { - _lastKeyHandled = _parent->BaseEvents->RawTextInputEvent(0, [string UTF8String]); - } - //} + + if(_parent != nullptr) + { + _lastKeyHandled = _parent->BaseEvents->RawTextInputEvent(0, [string UTF8String]); + } [[self inputContext] invalidateCharacterCoordinates]; } diff --git a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs index e999d0bb74..b4f87ecc1d 100644 --- a/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs +++ b/src/Avalonia.Controls/TextBoxTextInputMethodClient.cs @@ -30,7 +30,9 @@ namespace Avalonia.Controls return default; } - var transform = _presenter.TransformToVisual(_parent); + var visualRoot = _presenter.VisualRoot!; + + var transform = _presenter.TransformToVisual((Visual)visualRoot); if (transform == null) { @@ -38,7 +40,7 @@ namespace Avalonia.Controls } var rect = _presenter.GetCursorRectangle().TransformToAABB(transform.Value); - + return rect; } }