瀏覽代碼

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

Thomas Nind 6 月之前
父節點
當前提交
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 ();
+    }
 }