diff --git a/Telegram/SourceFiles/history/history_service.cpp b/Telegram/SourceFiles/history/history_service.cpp index 88d39ba92..6e6771250 100644 --- a/Telegram/SourceFiles/history/history_service.cpp +++ b/Telegram/SourceFiles/history/history_service.cpp @@ -832,6 +832,10 @@ ClickHandlerPtr HistoryService::fromLink() const { void HistoryService::setServiceText(const PreparedText &prepared) { _text.setText( + st::serviceTextStyle, + prepared.text, + Ui::ItemTextServiceOptions()); + _postfixedText.setText( st::serviceTextStyle, prepared.text + GenerateServiceTime(date()), Ui::ItemTextServiceOptions()); @@ -839,6 +843,7 @@ void HistoryService::setServiceText(const PreparedText &prepared) { for_const (auto &link, prepared.links) { // Link indices start with 1. _text.setLink(++linkIndex, link); + _postfixedText.setLink(linkIndex, link); } _textWidth = -1; _textHeight = 0; diff --git a/Telegram/SourceFiles/history/history_service.h b/Telegram/SourceFiles/history/history_service.h index 7b7bcbab3..6ff87b56c 100644 --- a/Telegram/SourceFiles/history/history_service.h +++ b/Telegram/SourceFiles/history/history_service.h @@ -164,6 +164,8 @@ private: friend class HistoryView::Service; + Ui::Text::String _postfixedText; + }; not_null GenerateJoinedMessage( diff --git a/Telegram/SourceFiles/history/view/history_view_service_message.cpp b/Telegram/SourceFiles/history/view/history_view_service_message.cpp index fbf9f0c77..03c8ea53d 100644 --- a/Telegram/SourceFiles/history/view/history_view_service_message.cpp +++ b/Telegram/SourceFiles/history/view/history_view_service_message.cpp @@ -355,7 +355,7 @@ QSize Service::performCountCurrentSize(int newWidth) { auto nwidth = qMax(contentWidth - st::msgServicePadding.left() - st::msgServicePadding.right(), 0); if (nwidth != item->_textWidth) { item->_textWidth = nwidth; - item->_textHeight = item->_text.countHeight(nwidth); + item->_textHeight = item->_postfixedText.countHeight(nwidth); } if (contentWidth >= maxWidth()) { newHeight += minHeight(); @@ -375,8 +375,8 @@ QSize Service::performCountOptimalSize() { const auto item = message(); const auto media = this->media(); - auto maxWidth = item->_text.maxWidth() + st::msgServicePadding.left() + st::msgServicePadding.right(); - auto minHeight = item->_text.minHeight(); + auto maxWidth = item->_postfixedText.maxWidth() + st::msgServicePadding.left() + st::msgServicePadding.right(); + auto minHeight = item->_postfixedText.minHeight(); if (media) { media->initDimensions(); } @@ -449,12 +449,12 @@ void Service::draw( auto trect = QRect(g.left(), st::msgServiceMargin.top(), g.width(), height).marginsAdded(-st::msgServicePadding); - ServiceMessagePainter::paintComplexBubble(p, g.left(), g.width(), item->_text, trect); + ServiceMessagePainter::paintComplexBubble(p, g.left(), g.width(), item->_postfixedText, trect); p.setBrush(Qt::NoBrush); p.setPen(st::msgServiceFg); p.setFont(st::msgServiceFont); - item->_text.draw(p, trect.x(), trect.y(), trect.width(), Qt::AlignCenter, 0, -1, selection, false); + item->_postfixedText.draw(p, trect.x(), trect.y(), trect.width(), Qt::AlignCenter, 0, -1, selection, false); p.restoreTextPalette(); @@ -512,7 +512,7 @@ TextState Service::textState(QPoint point, StateRequest request) const { if (trect.contains(point)) { auto textRequest = request.forText(); textRequest.align = style::al_center; - result = TextState(item, item->_text.getState( + result = TextState(item, item->_postfixedText.getState( point - trect.topLeft(), trect.width(), textRequest));