From 1002e8e6ada724441d0d0cd7205da232e79a2b1b Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 29 Dec 2025 13:31:18 +0300 Subject: [PATCH] Replaced with struct returned rpl data for requests of view repaint. --- Telegram/SourceFiles/boxes/peers/edit_peer_color_box.cpp | 4 ++-- Telegram/SourceFiles/boxes/star_gift_box.cpp | 4 ++-- .../SourceFiles/chat_helpers/ttl_media_layer_widget.cpp | 4 ++-- Telegram/SourceFiles/data/data_session.cpp | 4 ++-- Telegram/SourceFiles/data/data_session.h | 9 +++++++-- .../history/admin_log/history_admin_log_inner.cpp | 6 +++--- Telegram/SourceFiles/history/history_inner_widget.cpp | 4 ++-- .../history/view/controls/history_view_draft_options.cpp | 4 ++-- .../history/view/history_view_list_widget.cpp | 6 +++--- .../inline_bots/inline_bot_confirm_prepared.cpp | 4 ++-- .../media/stories/media_stories_reactions.cpp | 4 ++-- .../settings/business/settings_chat_intro.cpp | 4 ++-- 12 files changed, 31 insertions(+), 26 deletions(-) diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_color_box.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_color_box.cpp index 8d25a9f8a3..c950c1f19f 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_color_box.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_color_box.cpp @@ -335,8 +335,8 @@ PreviewWrap::PreviewWrap( const auto session = &_history->session(); session->data().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (view == _element.get()) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == _element.get()) { update(); } }, lifetime()); diff --git a/Telegram/SourceFiles/boxes/star_gift_box.cpp b/Telegram/SourceFiles/boxes/star_gift_box.cpp index 76da78d8f2..57a478c132 100644 --- a/Telegram/SourceFiles/boxes/star_gift_box.cpp +++ b/Telegram/SourceFiles/boxes/star_gift_box.cpp @@ -594,8 +594,8 @@ PreviewWrap::PreviewWrap( using namespace HistoryView; _history->owner().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (view == _item.get()) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == _item.get()) { update(); } }, lifetime()); diff --git a/Telegram/SourceFiles/chat_helpers/ttl_media_layer_widget.cpp b/Telegram/SourceFiles/chat_helpers/ttl_media_layer_widget.cpp index 76fe0a9824..97a9fb73f9 100644 --- a/Telegram/SourceFiles/chat_helpers/ttl_media_layer_widget.cpp +++ b/Telegram/SourceFiles/chat_helpers/ttl_media_layer_widget.cpp @@ -162,8 +162,8 @@ PreviewWrap::PreviewWrap( const auto session = &_item->history()->session(); session->data().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (view == _element.get()) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == _element.get()) { update(_elementGeometry); } }, lifetime()); diff --git a/Telegram/SourceFiles/data/data_session.cpp b/Telegram/SourceFiles/data/data_session.cpp index 4dce0e5330..e2ba14706d 100644 --- a/Telegram/SourceFiles/data/data_session.cpp +++ b/Telegram/SourceFiles/data/data_session.cpp @@ -1984,10 +1984,10 @@ rpl::producer> Session::itemRepaintRequest() const } void Session::requestViewRepaint(not_null view) { - _viewRepaintRequest.fire_copy(view); + _viewRepaintRequest.fire_copy({ view }); } -rpl::producer> Session::viewRepaintRequest() const { +rpl::producer Session::viewRepaintRequest() const { return _viewRepaintRequest.events(); } diff --git a/Telegram/SourceFiles/data/data_session.h b/Telegram/SourceFiles/data/data_session.h index 75b2f5caa2..9c309ba403 100644 --- a/Telegram/SourceFiles/data/data_session.h +++ b/Telegram/SourceFiles/data/data_session.h @@ -140,6 +140,11 @@ struct RecentJoinChat { PeerId joinedPeerId = 0; }; +struct RequestViewRepaint { + not_null view; + QRect rect; +}; + class Session final { public: using ViewElement = HistoryView::Element; @@ -371,7 +376,7 @@ public: void requestItemRepaint(not_null item); [[nodiscard]] rpl::producer> itemRepaintRequest() const; void requestViewRepaint(not_null view); - [[nodiscard]] rpl::producer> viewRepaintRequest() const; + [[nodiscard]] rpl::producer viewRepaintRequest() const; void requestItemResize(not_null item); [[nodiscard]] rpl::producer> itemResizeRequest() const; void requestViewResize(not_null view); @@ -1103,7 +1108,7 @@ private: rpl::event_stream _giftsUpdates; rpl::event_stream _giftAuctionGots; rpl::event_stream> _itemRepaintRequest; - rpl::event_stream> _viewRepaintRequest; + rpl::event_stream _viewRepaintRequest; rpl::event_stream> _itemResizeRequest; rpl::event_stream> _viewResizeRequest; rpl::event_stream> _itemShowHighlightRequest; diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp index fa3ef79383..dc6f10062e 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -274,9 +274,9 @@ InnerWidget::InnerWidget( setMouseTracking(true); _scrollDateHideTimer.setCallback([=] { scrollDateHideByTimer(); }); session().data().viewRepaintRequest( - ) | rpl::on_next([=](auto view) { - if (myView(view)) { - repaintItem(view); + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (myView(data.view)) { + repaintItem(data.view); } }, lifetime()); session().data().viewResizeRequest( diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 9aaf450d03..447355f3c2 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -403,8 +403,8 @@ HistoryInner::HistoryInner( mouseActionCancel(); }, lifetime()); session().data().viewRepaintRequest( - ) | rpl::on_next([this](not_null view) { - repaintItem(view); + ) | rpl::on_next([this](Data::RequestViewRepaint data) { + repaintItem(data.view); }, lifetime()); session().data().viewLayoutChanged( ) | rpl::filter([=](not_null view) { diff --git a/Telegram/SourceFiles/history/view/controls/history_view_draft_options.cpp b/Telegram/SourceFiles/history/view/controls/history_view_draft_options.cpp index 1033dec9d4..a363e11c72 100644 --- a/Telegram/SourceFiles/history/view/controls/history_view_draft_options.cpp +++ b/Telegram/SourceFiles/history/view/controls/history_view_draft_options.cpp @@ -205,8 +205,8 @@ PreviewWrap::PreviewWrap( const auto session = &_history->session(); session->data().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (_views.contains(view)) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (_views.contains(data.view)) { update(); } }, lifetime()); diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 2d40b4c4b8..49649ddce1 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -416,9 +416,9 @@ ListWidget::ListWidget( setMouseTracking(true); _scrollDateHideTimer.setCallback([this] { scrollDateHideByTimer(); }); _session->data().viewRepaintRequest( - ) | rpl::on_next([this](auto view) { - if (view->delegate() == this) { - repaintItem(view); + ) | rpl::on_next([this](Data::RequestViewRepaint data) { + if (data.view->delegate() == this) { + repaintItem(data.view); } }, lifetime()); _session->data().viewResizeRequest( diff --git a/Telegram/SourceFiles/inline_bots/inline_bot_confirm_prepared.cpp b/Telegram/SourceFiles/inline_bots/inline_bot_confirm_prepared.cpp index 86db1b1229..8fe8193197 100644 --- a/Telegram/SourceFiles/inline_bots/inline_bot_confirm_prepared.cpp +++ b/Telegram/SourceFiles/inline_bots/inline_bot_confirm_prepared.cpp @@ -109,8 +109,8 @@ PreviewWrap::PreviewWrap( using namespace HistoryView; _history->owner().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (view == _item.get()) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == _item.get()) { update(); } }, lifetime()); diff --git a/Telegram/SourceFiles/media/stories/media_stories_reactions.cpp b/Telegram/SourceFiles/media/stories/media_stories_reactions.cpp index dbe343615d..34e1605c02 100644 --- a/Telegram/SourceFiles/media/stories/media_stories_reactions.cpp +++ b/Telegram/SourceFiles/media/stories/media_stories_reactions.cpp @@ -256,8 +256,8 @@ ReactionView::ReactionView( - st::msgMargin.bottom(); session->data().viewRepaintRequest( - ) | rpl::on_next([=](not_null element) { - if (element == view) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == view) { update(); } }, lifetime()); diff --git a/Telegram/SourceFiles/settings/business/settings_chat_intro.cpp b/Telegram/SourceFiles/settings/business/settings_chat_intro.cpp index 7fc94de31b..34a7dcb70d 100644 --- a/Telegram/SourceFiles/settings/business/settings_chat_intro.cpp +++ b/Telegram/SourceFiles/settings/business/settings_chat_intro.cpp @@ -352,8 +352,8 @@ PreviewWrap::PreviewWrap( _style->apply(_theme.get()); session->data().viewRepaintRequest( - ) | rpl::on_next([=](not_null view) { - if (view == _view->view()) { + ) | rpl::on_next([=](Data::RequestViewRepaint data) { + if (data.view == _view->view()) { update(); } }, lifetime());