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.Native/AvaloniaNativeTextInputMethod.cs b/src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs index b216970af3..796a0ced37 100644 --- a/src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs +++ b/src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs @@ -60,7 +60,18 @@ namespace Avalonia.Native return; } - _inputMethod.SetCursorRect(_client.CursorRectangle.ToAvnRect()); + var visualRoot = _client.TextViewVisual.VisualRoot; + + var transform = _client.TextViewVisual.TransformToVisual((Visual)visualRoot); + + if (transform == null) + { + return; + } + + var rect = _client.CursorRectangle.TransformToAABB(transform.Value); + + _inputMethod.SetCursorRect(rect.ToAvnRect()); } private void OnSurroundingTextChanged(object sender, EventArgs e)