From 479bb2a1d652a6b5bf8d957c854750fe3e9bfe2e Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Thu, 21 Mar 2024 19:47:48 +0300 Subject: [PATCH] Added focus to input field in channel earn info section. --- .../channel_statistics/earn/info_earn_inner_widget.cpp | 8 ++++++++ .../info/channel_statistics/earn/info_earn_inner_widget.h | 2 ++ .../info/channel_statistics/earn/info_earn_widget.cpp | 4 ++++ .../info/channel_statistics/earn/info_earn_widget.h | 1 + 4 files changed, 15 insertions(+) diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp index 189e56652..cc3b347ec 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.cpp @@ -449,6 +449,10 @@ void InnerWidget::fill() { Ui::InputField::Mode::MultiLine, tr::lng_channel_earn_balance_placeholder()), st::boxRowPadding); + _focusRequested.events( + ) | rpl::start_with_next([=] { + input->setFocusFast(); + }, input->lifetime()); Ui::AddSkip(container); @@ -942,6 +946,10 @@ void InnerWidget::showFinished() { _showFinished.fire({}); } +void InnerWidget::setInnerFocus() { + _focusRequested.fire({}); +} + not_null InnerWidget::peer() const { return _peer; } diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h index 00cf03149..a4a63fda3 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_inner_widget.h @@ -38,6 +38,7 @@ public: [[nodiscard]] rpl::producer showRequests() const; void showFinished(); + void setInnerFocus(); void saveState(not_null memento); void restoreState(not_null memento); @@ -55,6 +56,7 @@ private: rpl::event_stream _scrollToRequests; rpl::event_stream _showRequests; rpl::event_stream<> _showFinished; + rpl::event_stream<> _focusRequested; rpl::event_stream _loaded; }; diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.cpp b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.cpp index fb50472db..b0c38e1ad 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.cpp +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.cpp @@ -95,6 +95,10 @@ void Widget::showFinished() { _inner->showFinished(); } +void Widget::setInnerFocus() { + _inner->setInnerFocus(); +} + std::shared_ptr Widget::doCreateMemento() { auto result = std::make_shared(controller()); saveState(result.get()); diff --git a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h index a79dd897a..287e72338 100644 --- a/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h +++ b/Telegram/SourceFiles/info/channel_statistics/earn/info_earn_widget.h @@ -47,6 +47,7 @@ public: rpl::producer title() override; rpl::producer desiredShadowVisibility() const override; void showFinished() override; + void setInnerFocus() override; [[nodiscard]] not_null peer() const;