From bf84dba31b4670a6d1ac945639b66d857a2352a5 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Mon, 29 Apr 2024 19:21:24 +0900 Subject: [PATCH] Fix an issue where garbled menu captions may be displayed if the menu captions of user-defined plug-ins contain non-ASCII characters. --- Src/FileTransform.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/Src/FileTransform.cpp b/Src/FileTransform.cpp index b0802adb128..77517b74edc 100644 --- a/Src/FileTransform.cpp +++ b/Src/FileTransform.cpp @@ -833,6 +833,11 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vector= 0x80); }); + return containsNonAsciiChars ? text : tr(ucr::toUTF8(strutils::to_str(text))); + }; if (autoPlugin.m_name.empty()) autoPlugin.m_name = _T(""); for (const auto& event: events) @@ -855,10 +860,8 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vectorGetExtendedPropertyValue(_T("MenuCaption")); const auto processType = plugin->GetExtendedPropertyValue(_T("ProcessType")); - const String caption = tr(ucr::toUTF8(menuCaption.has_value() ? - strutils::to_str(*menuCaption) : plugin->m_name)); - const String process = tr(ucr::toUTF8(processType.has_value() ? - strutils::to_str(*processType) : _T("&Others"))); + const String caption = tr2(menuCaption.has_value() ? strutils::to_str(*menuCaption) : plugin->m_name); + const String process = tr2(processType.has_value() ? strutils::to_str(*processType) : _T("&Others")); if (plugin->TestAgainstRegList(filteredFilenames)) suggestedPlugins.emplace_back(caption, plugin->m_name, id, plugin.get()); @@ -885,16 +888,14 @@ CreatePluginMenuInfos(const String& filteredFilenames, const std::vectorTestAgainstRegList(filteredFilenames); for (int i = 0; i < nScriptFnc; ++i, ++id) { - if (scriptNamesArray[i] == L"PluginOnEvent") + if (scriptNamesArray[i] == L"PluginOnEvent" || scriptNamesArray[i] == L"ShowSettingsDialog") continue; const auto menuCaption = plugin->GetExtendedPropertyValue(scriptNamesArray[i] + _T(".MenuCaption")); auto processType = plugin->GetExtendedPropertyValue(scriptNamesArray[i] + _T(".ProcessType")); if (!processType.has_value()) processType = plugin->GetExtendedPropertyValue(_T("ProcessType")); - const String caption = tr(ucr::toUTF8(menuCaption.has_value() ? - strutils::to_str(*menuCaption) : scriptNamesArray[i])); - const String process = tr(ucr::toUTF8(processType.has_value() ? - strutils::to_str(*processType) : _T("&Others"))); + const String caption = tr2(menuCaption.has_value() ? strutils::to_str(*menuCaption) : scriptNamesArray[i]); + const String process = tr2(processType.has_value() ? strutils::to_str(*processType) : _T("&Others")); if (matched) suggestedPlugins.emplace_back(caption, scriptNamesArray[i], id, plugin.get()); if (allPlugins.find(process) == allPlugins.end())