Browse Source

Merge branch 'master' into fixes/tabOutOfRange

Benedikt Stebner 2 years ago
parent
commit
40669b5b3b

+ 7 - 12
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<NSString *> *)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];
 }

+ 12 - 1
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)