From ab248febcd92c6722f4d168cb344802e92ebd655 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 8 Jan 2022 09:51:03 +0300 Subject: [PATCH] Added ability to select text of question from polls. Fixed #8713. Fixed #17531. --- .../history/view/media/history_view_poll.cpp | 24 ++++++++++++++++++- .../history/view/media/history_view_poll.h | 6 +++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp index 8324b03680..128ac35d2a 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_poll.cpp +++ b/Telegram/SourceFiles/history/view/media/history_view_poll.cpp @@ -1348,6 +1348,20 @@ void Poll::startAnswersAnimation() const { st::historyPollDuration); } +TextSelection Poll::adjustSelection( + TextSelection selection, + TextSelectType type) const { + return _question.adjustSelection(selection, type); +} + +uint16 Poll::fullSelectionLength() const { + return _question.length(); +} + +TextForMimeData Poll::selectedText(TextSelection selection) const { + return _question.toTextForMimeData(selection); +} + TextState Poll::textState(QPoint point, StateRequest request) const { auto result = TextState(_parent); if (!_poll->sendingVotes.empty()) { @@ -1364,7 +1378,15 @@ TextState Poll::textState(QPoint point, StateRequest request) const { } paintw -= padding.left() + padding.right(); - tshift += _question.countHeight(paintw) + st::historyPollSubtitleSkip; + const auto questionH = _question.countHeight(paintw); + if (QRect(padding.left(), tshift, paintw, questionH).contains(point)) { + result = TextState(_parent, _question.getState( + point - QPoint(padding.left(), tshift), + paintw, + request.forText())); + return result; + } + tshift += questionH + st::historyPollSubtitleSkip; if (inShowSolution(point, padding.left() + paintw, tshift)) { result.link = _showSolutionLink; return result; diff --git a/Telegram/SourceFiles/history/view/media/history_view_poll.h b/Telegram/SourceFiles/history/view/media/history_view_poll.h index 195fcc2457..68eab16f26 100644 --- a/Telegram/SourceFiles/history/view/media/history_view_poll.h +++ b/Telegram/SourceFiles/history/view/media/history_view_poll.h @@ -47,6 +47,12 @@ public: return false; } + [[nodiscard]] TextSelection adjustSelection( + TextSelection selection, + TextSelectType type) const override; + uint16 fullSelectionLength() const override; + TextForMimeData selectedText(TextSelection selection) const override; + BubbleRoll bubbleRoll() const override; QMargins bubbleRollRepaintMargins() const override; void paintBubbleFireworks(