Просмотр исходного кода

Fix foreach runes bug with unicode surrogate pairs (#3894)

Thomas Nind 6 месяцев назад
Родитель
Сommit
81ad695ef7
2 измененных файлов с 13 добавлено и 1 удалено
  1. 1 1
      Terminal.Gui/Text/TextFormatter.cs
  2. 12 0
      UnitTests/Views/LabelTests.cs

+ 1 - 1
Terminal.Gui/Text/TextFormatter.cs

@@ -2124,7 +2124,7 @@ public class TextFormatter
         var start = string.Empty;
         var i = 0;
 
-        foreach (Rune c in text)
+        foreach (Rune c in text.EnumerateRunes ())
         {
             if (c == hotKeySpecifier && i == hotPos)
             {

+ 12 - 0
UnitTests/Views/LabelTests.cs

@@ -1460,4 +1460,16 @@ e
         Application.Top.Dispose ();
         Application.ResetState ();
     }
+
+    // https://github.com/gui-cs/Terminal.Gui/issues/3893
+    [Fact]
+    [SetupFakeDriver]
+    public void TestLabelUnderscoreMinus ()
+    {
+        var lbl = new Label ()
+        {
+            Text = "TextView with some more test_- text. Unicode shouldn't 𝔹Aℝ𝔽!"
+        };
+        lbl.Draw ();
+    }
 }