Jelajahi Sumber

avoid cursor being inside multichar

Johann 5 tahun lalu
induk
melakukan
d137fb9fd0
1 mengubah file dengan 4 tambahan dan 0 penghapusan
  1. 4 0
      lazpaintcontrols/lcvectortextshapes.pas

+ 4 - 0
lazpaintcontrols/lcvectortextshapes.pas

@@ -861,6 +861,7 @@ begin
     FText := GetTextLayout.TextUTF8;
     dec(selLeft,delCount);
   end;
+  inc(selLeft, GetTextLayout.IncludeNonSpacingChars(selLeft, 0));
   FSelStart := selLeft;
   FSelEnd := selLeft;
   EndUpdate;
@@ -880,6 +881,7 @@ begin
     tl.DeleteText(selRight, ACount);
     FText := tl.TextUTF8;
   end;
+  inc(selRight, GetTextLayout.IncludeNonSpacingChars(selRight, 0));
   FSelStart := selRight;
   FSelEnd := selRight;
   EndUpdate;
@@ -895,6 +897,7 @@ begin
     selLeft := Min(FSelStart,FSelEnd);
     GetTextLayout.DeleteText(selLeft, Abs(FSelEnd-FSelStart));
     FText := GetTextLayout.TextUTF8;
+    inc(selLeft, GetTextLayout.IncludeNonSpacingChars(selLeft, 0));
     FSelStart := selLeft;
     FSelEnd := selLeft;
     EndUpdate;
@@ -922,6 +925,7 @@ begin
   insertCount := GetTextLayout.InsertText(ATextUTF8, FSelStart);
   FText := GetTextLayout.TextUTF8;
   Inc(FSelStart, insertCount);
+  inc(FSelStart, GetTextLayout.IncludeNonSpacingChars(FSelStart, 0));
   FSelEnd := FSelStart;
   EndUpdate;
 end;