Fixed rpl trigger for back button in profile top bar.

This commit is contained in:
23rd
2025-11-22 13:01:30 +03:00
parent 1ad055c8c8
commit 63014adfef
2 changed files with 7 additions and 10 deletions
@@ -356,7 +356,8 @@ TopBar::TopBar(
}
});
return owned;
}()) {
}())
, _backToggles(std::move(descriptor.backToggles)) {
_peer->updateFull();
if (const auto broadcast = _peer->monoforumBroadcast()) {
broadcast->updateFull();
@@ -420,16 +421,13 @@ TopBar::TopBar(
badgeUpdates = rpl::merge(
std::move(badgeUpdates),
nameValue() | rpl::to_empty,
rpl::duplicate(descriptor.backToggles) | rpl::to_empty);
_backToggles.value() | rpl::to_empty);
std::move(badgeUpdates) | rpl::start_with_next([=] {
updateLabelsPosition();
}, _title->lifetime());
setupUniqueBadgeTooltip();
setupButtons(
controller,
rpl::duplicate(descriptor.backToggles),
descriptor.source);
setupButtons(controller, descriptor.source);
setupUserpicButton(controller);
if (_hasActions) {
_peer->session().changes().peerFlagsValue(
@@ -1822,7 +1820,6 @@ void TopBar::paintEvent(QPaintEvent *e) {
void TopBar::setupButtons(
not_null<Window::SessionController*> controller,
rpl::producer<bool> backToggles,
Source source) {
if (source == Source::Preview) {
setRoundEdges(false);
@@ -1831,7 +1828,7 @@ void TopBar::setupButtons(
rpl::combine(
_wrap.value(),
_edgeColor.value()
) | rpl::start_with_next([=, backToggles = std::move(backToggles)](
) | rpl::start_with_next([=](
Wrap wrap,
std::optional<QColor> edgeColor) mutable {
const auto isLayer = (wrap == Wrap::Layer);
@@ -1858,7 +1855,7 @@ void TopBar::setupButtons(
_back->QWidget::show();
_back->setDuration(0);
_back->toggleOn(isLayer || isSide
? rpl::duplicate(backToggles)
? _backToggles.value()
: rpl::single(wrap == Wrap::Narrow));
_back->entity()->clicks() | rpl::to_empty | rpl::start_to_stream(
_backClicks,
@@ -154,7 +154,6 @@ private:
void setupActions(not_null<Window::SessionController*> controller);
void setupButtons(
not_null<Window::SessionController*> controller,
rpl::producer<bool> backToggles,
Source source);
void setupShowLastSeen(not_null<Window::SessionController*> controller);
void setupUniqueBadgeTooltip();
@@ -257,6 +256,7 @@ private:
base::unique_qptr<Ui::IconButton> _close;
base::unique_qptr<Ui::FadeWrap<Ui::IconButton>> _back;
rpl::variable<bool> _backToggles;
rpl::event_stream<> _backClicks;