From dd38da773716f36bf9e39a7b1387d6d6b46eadf6 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 4 Jul 2019 11:51:41 +0200 Subject: [PATCH] Allow markdown to intersect with previewed links. --- .../SourceFiles/chat_helpers/message_field.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Telegram/SourceFiles/chat_helpers/message_field.cpp b/Telegram/SourceFiles/chat_helpers/message_field.cpp index c10a4f6fc..a4f9428db 100644 --- a/Telegram/SourceFiles/chat_helpers/message_field.cpp +++ b/Telegram/SourceFiles/chat_helpers/message_field.cpp @@ -605,6 +605,12 @@ void MessageLinksParser::parse() { _list = QStringList(); return; } + const auto tagCanIntersectWithLink = [](const QString &tag) { + return (tag == Ui::InputField::kTagBold) + || (tag == Ui::InputField::kTagItalic) + || (tag == Ui::InputField::kTagUnderline) + || (tag == Ui::InputField::kTagStrikeOut); + }; auto ranges = QVector(); @@ -620,7 +626,9 @@ void MessageLinksParser::parse() { ++tag; }; const auto processTagsBefore = [&](int offset) { - while (tag != tagsEnd && tag->offset + tag->length <= offset) { + while (tag != tagsEnd + && (tag->offset + tag->length <= offset + || tagCanIntersectWithLink(tag->id))) { processTag(); } }; @@ -640,9 +648,9 @@ void MessageLinksParser::parse() { while (markdownTag != markdownTagsEnd && (markdownTag->adjustedStart + markdownTag->adjustedLength <= from - || !markdownTag->closed)) { + || !markdownTag->closed + || tagCanIntersectWithLink(markdownTag->tag))) { ++markdownTag; - continue; } if (markdownTag == markdownTagsEnd || markdownTag->adjustedStart >= from + length) {