فهرست منبع

LibVT: Make TerminalWidget::selected_text() produce UTF-8 strings :^)

Andreas Kling 5 سال پیش
والد
کامیت
0d78ee95f9
1فایلهای تغییر یافته به همراه8 افزوده شده و 1 حذف شده
  1. 8 1
      Libraries/LibVT/TerminalWidget.cpp

+ 8 - 1
Libraries/LibVT/TerminalWidget.cpp

@@ -30,6 +30,7 @@
 #include <AK/StdLibExtras.h>
 #include <AK/StdLibExtras.h>
 #include <AK/String.h>
 #include <AK/String.h>
 #include <AK/StringBuilder.h>
 #include <AK/StringBuilder.h>
+#include <AK/Utf32View.h>
 #include <AK/Utf8View.h>
 #include <AK/Utf8View.h>
 #include <Kernel/KeyCode.h>
 #include <Kernel/KeyCode.h>
 #include <LibCore/ConfigFile.h>
 #include <LibCore/ConfigFile.h>
@@ -739,7 +740,13 @@ String TerminalWidget::selected_text() const
                 builder.append('\n');
                 builder.append('\n');
                 break;
                 break;
             }
             }
-            builder.append(line.codepoint(column));
+            // FIXME: This is a bit hackish.
+            if (line.is_utf32()) {
+                u32 codepoint = line.codepoint(column);
+                builder.append(Utf32View(&codepoint, 1));
+            } else {
+                builder.append(line.codepoint(column));
+            }
             if (column == line.length() - 1 || (m_rectangle_selection && column == last_column)) {
             if (column == line.length() - 1 || (m_rectangle_selection && column == last_column)) {
                 builder.append('\n');
                 builder.append('\n');
             }
             }