diff --git a/far2l/src/main.cpp b/far2l/src/main.cpp index 2c4ff2accd..cbf6239f02 100644 --- a/far2l/src/main.cpp +++ b/far2l/src/main.cpp @@ -312,22 +312,18 @@ static int MainProcess(FARString strEditViewArg, FARString strDestName1, FARStri if (tweaks & TWEAK_STATUS_SUPPORT_OSC52CLIP_SET) { SetMessageHelp(L"Far2lGettingStarted"); - std::wstring source_str = Msg::OSC52Confirm.CPtr(); - std::vector lines; ExMessager em; - StrExplode(lines, source_str, L"\n", false); - for (const auto ¤t_line : lines) { - em.AddDup(current_line.c_str()); - } + em.AddMultiline(Msg::OSC52Confirm); em.AddDup(L"Yes"); em.AddDup(L"No"); if (em.Show(0, 2)) { - Opt.OSC52ClipSet = 0; + if (Opt.OSC52ClipSet != 0) + { Opt.OSC52ClipSet = 0; cfgNeedSave = true; } } else { - Opt.OSC52ClipSet = 1; + if (Opt.OSC52ClipSet != 1) + { Opt.OSC52ClipSet = 1; cfgNeedSave = true; } } - cfgNeedSave = true; } } diff --git a/far2l/src/message.cpp b/far2l/src/message.cpp index 1169d2abe6..f5760a4621 100644 --- a/far2l/src/message.cpp +++ b/far2l/src/message.cpp @@ -566,6 +566,16 @@ Messager &FN_NOINLINE ExMessager::AddDup(const wchar_t *v) return *this; } +Messager &FN_NOINLINE ExMessager::AddMultiline(const wchar_t *v, const wchar_t *divs) +{ + std::wstring source_str = v; + std::vector lines; + StrExplode(lines, source_str, divs, false); + for (const auto ¤t_line : lines) + AddDup(current_line.c_str()); + return *this; +} + /////////////////////////////////// void GetMessagePosition(int &X1, int &Y1, int &X2, int &Y2) diff --git a/far2l/src/message.hpp b/far2l/src/message.hpp index 97737f0e78..6ed95810e3 100644 --- a/far2l/src/message.hpp +++ b/far2l/src/message.hpp @@ -89,6 +89,9 @@ struct ExMessager : Messager Messager &AddFormat(FarLangMsg fmt, ...); Messager &AddFormat(const wchar_t *fmt, ...); Messager &AddDup(const wchar_t *v); + Messager &AddMultiline(const wchar_t *v, const wchar_t *divs = L"\n"); + inline Messager &AddMultiline(FarLangMsg v, const wchar_t *divs = L"\n") + { return AddMultiline(v.CPtr(), divs); }; private: std::vector _owneds;