Browse Source

Merge pull request #10693 from Gillibald/fixes/macCaretPosition

[macOS] Fix caret position handling
release/11.0.0-preview6
Dan Walmsley 4 years ago
committed by GitHub
parent
commit
55c9bd69cd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 19
      native/Avalonia.Native/src/OSX/AvnView.mm
  2. 13
      src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs

19
native/Avalonia.Native/src/OSX/AvnView.mm

@ -598,13 +598,13 @@
{ {
[[_markedText mutableString] setString:@""]; [[_markedText mutableString] setString:@""];
[[self inputContext] discardMarkedText];
if(!_parent->InputMethod->IsActive()){ if(!_parent->InputMethod->IsActive()){
return; return;
} }
_parent->InputMethod->Client->SetPreeditText(nullptr); _parent->InputMethod->Client->SetPreeditText(nullptr);
[[self inputContext] discardMarkedText];
} }
- (NSArray<NSString *> *)validAttributesForMarkedText - (NSArray<NSString *> *)validAttributesForMarkedText
@ -619,17 +619,12 @@
- (void)insertText:(id)string replacementRange:(NSRange)replacementRange - (void)insertText:(id)string replacementRange:(NSRange)replacementRange
{ {
//[_text replaceCharactersInRange:replacementRange withString:string];
[self unmarkText]; [self unmarkText];
//if(!_lastKeyHandled) if(_parent != nullptr)
//{ {
if(_parent != nullptr) _lastKeyHandled = _parent->BaseEvents->RawTextInputEvent(0, [string UTF8String]);
{ }
_lastKeyHandled = _parent->BaseEvents->RawTextInputEvent(0, [string UTF8String]);
}
//}
[[self inputContext] invalidateCharacterCoordinates]; [[self inputContext] invalidateCharacterCoordinates];
} }

13
src/Avalonia.Native/AvaloniaNativeTextInputMethod.cs

@ -60,7 +60,18 @@ namespace Avalonia.Native
return; 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) private void OnSurroundingTextChanged(object sender, EventArgs e)

Loading…
Cancel
Save