From 1a2a65ff19c07839dab286d6b466b5fc96c9e2ad Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 26 May 2022 17:14:40 +0400 Subject: [PATCH] Scale premium reaction lock. --- .../view/history_view_react_button.cpp | 34 +++++++++++++++---- .../history/view/history_view_react_button.h | 1 + 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/Telegram/SourceFiles/history/view/history_view_react_button.cpp b/Telegram/SourceFiles/history/view/history_view_react_button.cpp index 019ba6622..a87a2139a 100644 --- a/Telegram/SourceFiles/history/view/history_view_react_button.cpp +++ b/Telegram/SourceFiles/history/view/history_view_react_button.cpp @@ -991,7 +991,9 @@ void Manager::paintButton( ? QPoint(0, expanded - expandedSkip) : QPoint(0, expandedSkip); const auto source = validateEmoji(frameIndex, scale); - if (expanded || (current && !onlyMainEmojiVisible())) { + if (expanded + || (current && !onlyMainEmojiVisible()) + || (_icons.size() == 1 && _icons.front()->premiumLock)) { const auto origin = expanded ? QPoint() : position; const auto scroll = button->expandAnimationScroll(expandRatio); const auto opacity = button->expandAnimationOpacity(expandRatio); @@ -1372,11 +1374,7 @@ void Manager::paintAllEmoji( clearStateForHidden(*icon); } } else if (icon->premiumLock) { - st::reactionPremiumLocked.paintInCenter(p, QRect( - _inner.x() + (_inner.width() - finalSize) / 2, - _inner.y() + (_inner.height() - finalSize) / 2, - finalSize, - finalSize).translated(emojiPosition - shift)); + paintPremiumIcon(p, emojiPosition - shift, target); } else { const auto appear = icon->appear.get(); if (current @@ -1398,6 +1396,30 @@ void Manager::paintAllEmoji( } } +void Manager::paintPremiumIcon( + QPainter &p, + QPoint position, + QRectF target) const { + const auto finalSize = CornerImageSize(1.); + const auto to = QRect( + _inner.x() + (_inner.width() - finalSize) / 2, + _inner.y() + (_inner.height() - finalSize) / 2, + finalSize, + finalSize).translated(position); + const auto scale = target.width() / to.width(); + if (scale != 1.) { + p.save(); + p.translate(target.center()); + p.scale(scale, scale); + p.translate(-target.center()); + } + auto hq = PainterHighQualityEnabler(p); + st::reactionPremiumLocked.paintInCenter(p, to); + if (scale != 1.) { + p.restore(); + } +} + void Manager::clearStateForHidden(ReactionIcons &icon) { if (const auto appear = icon.appear.get()) { appear->jumpTo(0, nullptr); diff --git a/Telegram/SourceFiles/history/view/history_view_react_button.h b/Telegram/SourceFiles/history/view/history_view_react_button.h index 57bd072e4..6768deb5c 100644 --- a/Telegram/SourceFiles/history/view/history_view_react_button.h +++ b/Telegram/SourceFiles/history/view/history_view_react_button.h @@ -241,6 +241,7 @@ private: float64 scale, QPoint position, QPoint mainEmojiPosition); + void paintPremiumIcon(QPainter &p, QPoint position, QRectF target) const; void paintInnerGradients( Painter &p, const QColor &background,