From a284fa32738d2283a469913be5c408c8aa0458d4 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 23 May 2022 03:00:13 +0300 Subject: [PATCH] Added close button to custom top bar in premium settings. --- Telegram/SourceFiles/settings/settings.style | 8 +++++++- .../SourceFiles/settings/settings_premium.cpp | 20 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/Telegram/SourceFiles/settings/settings.style b/Telegram/SourceFiles/settings/settings.style index 46bcd5a28..7d0d6548d 100644 --- a/Telegram/SourceFiles/settings/settings.style +++ b/Telegram/SourceFiles/settings/settings.style @@ -439,4 +439,10 @@ settingsPremiumLayerTopBarBack: IconButton(infoLayerTopBarBack) { color: shadowFg; } } - +settingsPremiumTopBarClose: IconButton(infoTopBarClose) { + icon: icon {{ "info/info_close", premiumButtonFg }}; + iconOver: icon {{ "info/info_close", premiumButtonFg }}; + ripple: RippleAnimation(defaultRippleAnimation) { + color: shadowFg; + } +} diff --git a/Telegram/SourceFiles/settings/settings_premium.cpp b/Telegram/SourceFiles/settings/settings_premium.cpp index c248297d2..f76a445d6 100644 --- a/Telegram/SourceFiles/settings/settings_premium.cpp +++ b/Telegram/SourceFiles/settings/settings_premium.cpp @@ -67,6 +67,7 @@ private: const not_null _controller; base::unique_qptr> _back; + base::unique_qptr _close; rpl::variable _backToggles; rpl::variable _wrap; @@ -304,11 +305,12 @@ QPointer Premium::createPinnedToTop( _wrap.value( ) | rpl::start_with_next([=](Info::Wrap wrap) { + const auto isLayer = (wrap == Info::Wrap::Layer); _back = base::make_unique_q>( content, object_ptr( content, - (wrap == Info::Wrap::Layer) + isLayer ? st::settingsPremiumLayerTopBarBack : st::settingsPremiumTopBarBack), st::infoTopBarScale); @@ -317,6 +319,22 @@ QPointer Premium::createPinnedToTop( _back->entity()->addClickHandler([=] { _showBack.fire({}); }); + + if (!isLayer) { + _close = nullptr; + } else { + _close = base::make_unique_q( + content, + st::settingsPremiumTopBarClose); + _close->addClickHandler([=] { + _controller->parentController()->hideLayer(); + _controller->parentController()->hideSpecialLayer(); + }); + content->widthValue( + ) | rpl::start_with_next([=] { + _close->moveToRight(0, 0); + }, _close->lifetime()); + } }, container->lifetime()); return Ui::MakeWeak(not_null{ container });