From 8b006a154b31a2fd0fb58e77db25debef4bb61e0 Mon Sep 17 00:00:00 2001
From: ShadowNinja <shadowninja@minetest.net>
Date: Sun, 28 Feb 2016 13:27:54 -0500
Subject: [PATCH] Add support for non-ASCII characters to chat console

This still only supports 256 characters, but that's because
Irrlicht's clipboard handlers don't support wide characters.
---
 src/guiChatConsole.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/guiChatConsole.cpp b/src/guiChatConsole.cpp
index d1351a0f7..d59937c31 100644
--- a/src/guiChatConsole.cpp
+++ b/src/guiChatConsole.cpp
@@ -536,7 +536,8 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
 			// Copy text to clipboard
 			if (prompt.getCursorLength() <= 0)
 				return true;
-			std::string selected = wide_to_narrow(prompt.getSelection());
+			std::wstring wselected = prompt.getSelection();
+			std::string selected(wselected.begin(), wselected.end());
 			Environment->getOSOperator()->copyToClipboard(selected.c_str());
 			return true;
 		}
@@ -553,8 +554,10 @@ bool GUIChatConsole::OnEvent(const SEvent& event)
 			}
 			IOSOperator *os_operator = Environment->getOSOperator();
 			const c8 *text = os_operator->getTextFromClipboard();
-			if (text)
-				prompt.input(narrow_to_wide(text));
+			if (!text)
+				return true;
+			std::basic_string<unsigned char> str((const unsigned char*)text);
+			prompt.input(std::wstring(str.begin(), str.end()));
 			return true;
 		}
 		else if(event.KeyInput.Key == KEY_KEY_X && event.KeyInput.Control)
-- 
GitLab