diff --git a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp index a078ed63e..86268ef47 100644 --- a/Telegram/SourceFiles/ui/chat/pinned_bar.cpp +++ b/Telegram/SourceFiles/ui/chat/pinned_bar.cpp @@ -84,13 +84,13 @@ void PinnedBar::setContent(rpl::producer content) { void PinnedBar::setRightButton(object_ptr button) { const auto hasPrevious = (_right.button != nullptr); if (auto previous = _right.button.release()) { - _right.previousButtonLifetime.make_state( - RightButton::fromRaw(std::move(previous))); - _right.previousButtonLifetime = previous->toggledValue( + using Unique = base::unique_qptr>; + _right.previousButtonLifetime = previous->shownValue( ) | rpl::filter(!rpl::mappers::_1) | rpl::start_with_next([=] { _right.previousButtonLifetime.destroy(); }); previous->hide(anim::type::normal); + _right.previousButtonLifetime.make_state(Unique{ previous }); } _right.button.create(_wrap.entity(), std::move(button)); if (_right.button) {