From 774da18a386e9f0eda71331db22bc8e9b24bf44e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 25 Dec 2021 17:31:10 +0300 Subject: [PATCH] Added utility to correctly cut text with commands. --- ui/text/text_entity.cpp | 14 ++++++++++++++ ui/text/text_entity.h | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/ui/text/text_entity.cpp b/ui/text/text_entity.cpp index 69585fe..7c047c8 100644 --- a/ui/text/text_entity.cpp +++ b/ui/text/text_entity.cpp @@ -2348,6 +2348,20 @@ QString TextWithSpoilerCommands(const TextWithEntities &textWithEntities) { return text; } +QString CutTextWithCommands( + QString text, + int length, + const QString &start, + const QString &stop) { + text = text.mid(0, length); + const auto lastStart = text.lastIndexOf(start); + const auto lastStop = text.lastIndexOf(stop); + const auto additional = ((lastStart == -1) || (lastStart < lastStop)) + ? QString() + : stop; + return text + additional + qstr("..."); +} + } // namespace TextUtilities EntityInText::EntityInText( diff --git a/ui/text/text_entity.h b/ui/text/text_entity.h index 0cf60e2..823932d 100644 --- a/ui/text/text_entity.h +++ b/ui/text/text_entity.h @@ -383,5 +383,10 @@ void SetClipboardText( [[nodiscard]] QString TextWithSpoilerCommands( const TextWithEntities &textWithEntities); +[[nodiscard]] QString CutTextWithCommands( + QString text, + int length, + const QString &start, + const QString &stop); } // namespace TextUtilities