From ae13524e3bc116d38fb54770a40e89ae7274540f Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 27 May 2022 10:51:24 -0400 Subject: cmake-gui: Restore support for internationalization with Qt5 on Windows Restore the logic removed by commit 035078d847 (cmake-gui: Remove explicit locale setup, 2020-12-17, v3.20.0-rc1~205^2~6), but only with Qt5 on Windows. Leave a FIXME comment to support Qt6 later. Fixes: #23562 Issue: #23565 --- Source/QtDialog/CMakeSetup.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Source/QtDialog/CMakeSetup.cxx b/Source/QtDialog/CMakeSetup.cxx index 5debdb8..b041de9 100644 --- a/Source/QtDialog/CMakeSetup.cxx +++ b/Source/QtDialog/CMakeSetup.cxx @@ -10,6 +10,15 @@ #include #include +// FIXME(#23565): Qt6 has QTextCodec in Core5Compat, but using its +// `setCodecForLocale` does not make cmake-gui support non-ASCII chars +// on Windows. For now we only support them with Qt5. How do we support +// them with Qt6, preferably without Core5Compat? +#if defined(Q_OS_WIN) && (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) +# include +# define CMAKE_HAVE_QTEXTCODEC +#endif + #include "cmsys/CommandLineArguments.hxx" #include "cmsys/Encoding.hxx" #include "cmsys/SystemTools.hxx" @@ -121,6 +130,11 @@ int main(int argc, char** argv) setlocale(LC_NUMERIC, "C"); +#ifdef CMAKE_HAVE_QTEXTCODEC + QTextCodec* utf8_codec = QTextCodec::codecForName("UTF-8"); + QTextCodec::setCodecForLocale(utf8_codec); +#endif + // tell the cmake library where cmake is QDir cmExecDir(QApplication::applicationDirPath()); #if defined(Q_OS_MAC) -- cgit v0.12