mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-07-25 06:54:43 +00:00
Fixed callback of back button in profile top bar.
This commit is contained in:
@@ -97,6 +97,10 @@ InnerWidget::InnerWidget(
|
||||
}, lifetime());
|
||||
}
|
||||
|
||||
rpl::producer<> InnerWidget::backRequest() const {
|
||||
return _backClicks.events();
|
||||
}
|
||||
|
||||
object_ptr<Ui::RpWidget> InnerWidget::setupContent(
|
||||
not_null<RpWidget*> parent,
|
||||
Origin origin) {
|
||||
@@ -435,6 +439,8 @@ base::weak_qptr<Ui::RpWidget> InnerWidget::createPinnedToTop(
|
||||
.backToggles = _backToggles.value(),
|
||||
.showFinished = _showFinished.events(),
|
||||
});
|
||||
content->backRequest(
|
||||
) | rpl::start_to_stream(_backClicks, content->lifetime());
|
||||
content->setOnlineCount(_onlineCount.events());
|
||||
_topBarColor = content->edgeColor();
|
||||
return base::make_weak(not_null<Ui::RpWidget*>{ content });
|
||||
|
||||
@@ -46,6 +46,8 @@ public:
|
||||
not_null<Controller*> controller,
|
||||
Origin origin);
|
||||
|
||||
[[nodiscard]] rpl::producer<> backRequest() const;
|
||||
|
||||
void saveState(not_null<Memento*> memento);
|
||||
void restoreState(not_null<Memento*> memento);
|
||||
|
||||
@@ -93,6 +95,7 @@ private:
|
||||
rpl::event_stream<int> _desiredHeight;
|
||||
|
||||
rpl::variable<bool> _backToggles;
|
||||
rpl::event_stream<> _backClicks;
|
||||
rpl::event_stream<int> _onlineCount;
|
||||
rpl::event_stream<> _showFinished;
|
||||
|
||||
|
||||
@@ -930,6 +930,10 @@ TopBar::~TopBar() {
|
||||
base::take(_badgeOldTooltips);
|
||||
}
|
||||
|
||||
rpl::producer<> TopBar::backRequest() const {
|
||||
return _backClicks.events();
|
||||
}
|
||||
|
||||
void TopBar::setOnlineCount(rpl::producer<int> &&count) {
|
||||
std::move(count) | rpl::start_with_next([=](int v) {
|
||||
if (_statusLabel) {
|
||||
@@ -1370,9 +1374,9 @@ void TopBar::setupButtons(
|
||||
_back->toggleOn(isLayer || isSide
|
||||
? rpl::duplicate(backToggles)
|
||||
: rpl::single(wrap == Wrap::Narrow));
|
||||
_back->entity()->setClickedCallback([=] {
|
||||
controller->showBackFromStack();
|
||||
});
|
||||
_back->entity()->clicks() | rpl::to_empty | rpl::start_to_stream(
|
||||
_backClicks,
|
||||
_back->lifetime());
|
||||
|
||||
if (!isLayer && !isSide) {
|
||||
_close = nullptr;
|
||||
|
||||
@@ -110,6 +110,8 @@ public:
|
||||
TopBar(not_null<Ui::RpWidget*> parent, Descriptor descriptor);
|
||||
~TopBar();
|
||||
|
||||
[[nodiscard]] rpl::producer<> backRequest() const;
|
||||
|
||||
void setOnlineCount(rpl::producer<int> &&count);
|
||||
|
||||
void setRoundEdges(bool value);
|
||||
@@ -250,6 +252,8 @@ private:
|
||||
base::unique_qptr<Ui::IconButton> _close;
|
||||
base::unique_qptr<Ui::FadeWrap<Ui::IconButton>> _back;
|
||||
|
||||
rpl::event_stream<> _backClicks;
|
||||
|
||||
base::unique_qptr<Ui::IconButton> _topBarButton;
|
||||
base::unique_qptr<Ui::PopupMenu> _peerMenu;
|
||||
|
||||
|
||||
@@ -115,6 +115,10 @@ Widget::Widget(
|
||||
}
|
||||
}, lifetime());
|
||||
|
||||
_inner->backRequest() | rpl::start_with_next([=] {
|
||||
checkBeforeClose([=] { controller->showBackFromStack(); });
|
||||
}, _inner->lifetime());
|
||||
|
||||
if (_pinnedToTop) {
|
||||
_inner->widthValue(
|
||||
) | rpl::start_with_next([=](int w) {
|
||||
|
||||
@@ -263,6 +263,10 @@ void InnerWidget::setupAlbums() {
|
||||
|
||||
InnerWidget::~InnerWidget() = default;
|
||||
|
||||
rpl::producer<> InnerWidget::backRequest() const {
|
||||
return _backClicks.events();
|
||||
}
|
||||
|
||||
void InnerWidget::setupTop() {
|
||||
const auto albumId = _albumId.current();
|
||||
if (_addingToAlbumId) {
|
||||
@@ -504,6 +508,8 @@ base::weak_qptr<Ui::RpWidget> InnerWidget::createPinnedToTop(
|
||||
.backToggles = _backToggles.value(),
|
||||
.showFinished = _showFinished.events(),
|
||||
});
|
||||
content->backRequest(
|
||||
) | rpl::start_to_stream(_backClicks, content->lifetime());
|
||||
_topBarColor = content->edgeColor();
|
||||
return base::make_weak(not_null<Ui::RpWidget*>{ content });
|
||||
}
|
||||
|
||||
@@ -57,6 +57,8 @@ public:
|
||||
int addingToAlbumId = 0);
|
||||
~InnerWidget();
|
||||
|
||||
[[nodiscard]] rpl::producer<> backRequest() const;
|
||||
|
||||
bool showInternal(not_null<Memento*> memento);
|
||||
void setIsStackBottom(bool isStackBottom) {
|
||||
_isStackBottom = isStackBottom;
|
||||
@@ -162,6 +164,7 @@ private:
|
||||
rpl::variable<bool> _albumEmpty;
|
||||
|
||||
rpl::variable<bool> _backToggles;
|
||||
rpl::event_stream<> _backClicks;
|
||||
rpl::event_stream<> _showFinished;
|
||||
rpl::variable<std::optional<QColor>> _topBarColor;
|
||||
|
||||
|
||||
@@ -124,6 +124,10 @@ Widget::Widget(
|
||||
) | rpl::start_with_next([=] {
|
||||
refreshBottom();
|
||||
}, _inner->lifetime());
|
||||
|
||||
_inner->backRequest() | rpl::start_with_next([=] {
|
||||
checkBeforeClose([=] { controller->showBackFromStack(); });
|
||||
}, _inner->lifetime());
|
||||
}
|
||||
|
||||
void Widget::setInnerFocus() {
|
||||
|
||||
Reference in New Issue
Block a user