From dfbe11efdb027c6e2a7789cba0880f578c13a56b Mon Sep 17 00:00:00 2001 From: John Preston Date: Sun, 27 May 2018 13:48:04 +0300 Subject: [PATCH] Fix editing of markup with links. --- Telegram/SourceFiles/ui/text/text.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Telegram/SourceFiles/ui/text/text.cpp b/Telegram/SourceFiles/ui/text/text.cpp index 4a3bf6b79..944f58479 100644 --- a/Telegram/SourceFiles/ui/text/text.cpp +++ b/Telegram/SourceFiles/ui/text/text.cpp @@ -2991,18 +2991,13 @@ void Text::enumerateText(TextSelection selection, AppendPartCallback appendPartC uint16 blockFrom = (i == e) ? _text.size() : (*i)->from(); int32 blockFlags = (i == e) ? 0 : (*i)->flags(); - bool checkBlockFlags = (blockFrom >= selection.from) && (blockFrom <= selection.to); - if (checkBlockFlags && blockFlags != flags) { - flagsChangeCallback(flags, blockFlags); - flags = blockFlags; - } if (blockLnkIndex && !_links.at(blockLnkIndex - 1)) { // ignore empty links blockLnkIndex = 0; } if (blockLnkIndex != lnkIndex) { if (lnkIndex) { auto rangeFrom = qMax(selection.from, lnkFrom); - auto rangeTo = qMin(blockFrom, selection.to); + auto rangeTo = qMin(selection.to, blockFrom); if (rangeTo > rangeFrom) { // handle click handler QStringRef r = _text.midRef(rangeFrom, rangeTo - rangeFrom); if (lnkFrom != rangeFrom || blockFrom != rangeTo) { @@ -3018,7 +3013,16 @@ void Text::enumerateText(TextSelection selection, AppendPartCallback appendPartC clickHandlerStartCallback(); } } - if (i == e || blockFrom >= selection.to) break; + + const auto checkBlockFlags = (blockFrom >= selection.from) + && (blockFrom <= selection.to); + if (checkBlockFlags && blockFlags != flags) { + flagsChangeCallback(flags, blockFlags); + flags = blockFlags; + } + if (i == e || blockFrom >= selection.to) { + break; + } if ((*i)->type() == TextBlockTSkip) continue;