From ddc12c3f710992a9cb7bf33ebf3f1beb2c34f751 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 13 Oct 2025 14:03:44 +0300 Subject: [PATCH] Added ability to pass static icon to action button in profile top bar. --- .../info_profile_top_bar_action_button.cpp | 17 +++++++++++++++-- .../info_profile_top_bar_action_button.h | 5 +++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.cpp b/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.cpp index 30e2cb6b18..f79e4cb8c6 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.cpp +++ b/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.cpp @@ -32,6 +32,15 @@ TopBarActionButton::TopBarActionButton( setupLottie(lottieName); } +TopBarActionButton::TopBarActionButton( + not_null parent, + const QString &text, + const style::icon &icon) +: RippleButton(parent, st::universalRippleAnimation) +, _text(text) +, _icon(&icon) { +} + void TopBarActionButton::setupLottie(const QString &lottieName) { _lottie = std::make_unique(Lottie::IconDescriptor{ .name = lottieName, @@ -60,7 +69,7 @@ void TopBarActionButton::paintEvent(QPaintEvent *e) { const auto iconSize = st::infoProfileTopBarActionButtonIconSize; const auto iconTop = st::infoProfileTopBarActionButtonIconTop; - if (_lottie) { + if (_lottie || _icon) { const auto iconScale = (progress > kIconFadeStart) ? (progress - kIconFadeStart) / kIconFadeRange : 0.0; @@ -72,7 +81,11 @@ void TopBarActionButton::paintEvent(QPaintEvent *e) { p.translate(iconCenter); p.scale(iconScale, iconScale); p.translate(-iconCenter); - _lottie->paint(p, iconLeft, iconTop); + if (_lottie) { + _lottie->paint(p, iconLeft, iconTop); + } else if (_icon) { + _icon->paint(p, iconLeft, iconTop, width()); + } p.restore(); p.setOpacity(progress); } diff --git a/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.h b/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.h index f3984577d6..fabb90072b 100644 --- a/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.h +++ b/Telegram/SourceFiles/info/profile/info_profile_top_bar_action_button.h @@ -21,6 +21,10 @@ public: not_null parent, const QString &text, const QString &lottieName); + TopBarActionButton( + not_null parent, + const QString &text, + const style::icon &icon); protected: void paintEvent(QPaintEvent *e) override; @@ -33,6 +37,7 @@ private: QString _text; std::unique_ptr _lottie; + const style::icon *_icon = nullptr; };