Replaced with struct returned rpl data for requests of view repaint.

This commit is contained in:
23rd
2025-12-29 13:31:18 +03:00
parent cad9790e0b
commit 1002e8e6ad
12 changed files with 31 additions and 26 deletions
@@ -335,8 +335,8 @@ PreviewWrap::PreviewWrap(
const auto session = &_history->session();
session->data().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> view) {
if (view == _element.get()) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == _element.get()) {
update();
}
}, lifetime());
+2 -2
View File
@@ -594,8 +594,8 @@ PreviewWrap::PreviewWrap(
using namespace HistoryView;
_history->owner().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> view) {
if (view == _item.get()) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == _item.get()) {
update();
}
}, lifetime());
@@ -162,8 +162,8 @@ PreviewWrap::PreviewWrap(
const auto session = &_item->history()->session();
session->data().viewRepaintRequest(
) | rpl::on_next([=](not_null<const HistoryView::Element*> view) {
if (view == _element.get()) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == _element.get()) {
update(_elementGeometry);
}
}, lifetime());
+2 -2
View File
@@ -1984,10 +1984,10 @@ rpl::producer<not_null<const HistoryItem*>> Session::itemRepaintRequest() const
}
void Session::requestViewRepaint(not_null<const ViewElement*> view) {
_viewRepaintRequest.fire_copy(view);
_viewRepaintRequest.fire_copy({ view });
}
rpl::producer<not_null<const ViewElement*>> Session::viewRepaintRequest() const {
rpl::producer<RequestViewRepaint> Session::viewRepaintRequest() const {
return _viewRepaintRequest.events();
}
+7 -2
View File
@@ -140,6 +140,11 @@ struct RecentJoinChat {
PeerId joinedPeerId = 0;
};
struct RequestViewRepaint {
not_null<const HistoryView::Element*> view;
QRect rect;
};
class Session final {
public:
using ViewElement = HistoryView::Element;
@@ -371,7 +376,7 @@ public:
void requestItemRepaint(not_null<const HistoryItem*> item);
[[nodiscard]] rpl::producer<not_null<const HistoryItem*>> itemRepaintRequest() const;
void requestViewRepaint(not_null<const ViewElement*> view);
[[nodiscard]] rpl::producer<not_null<const ViewElement*>> viewRepaintRequest() const;
[[nodiscard]] rpl::producer<RequestViewRepaint> viewRepaintRequest() const;
void requestItemResize(not_null<const HistoryItem*> item);
[[nodiscard]] rpl::producer<not_null<const HistoryItem*>> itemResizeRequest() const;
void requestViewResize(not_null<ViewElement*> view);
@@ -1103,7 +1108,7 @@ private:
rpl::event_stream<GiftsUpdate> _giftsUpdates;
rpl::event_stream<GiftAuctionGot> _giftAuctionGots;
rpl::event_stream<not_null<const HistoryItem*>> _itemRepaintRequest;
rpl::event_stream<not_null<const ViewElement*>> _viewRepaintRequest;
rpl::event_stream<RequestViewRepaint> _viewRepaintRequest;
rpl::event_stream<not_null<const HistoryItem*>> _itemResizeRequest;
rpl::event_stream<not_null<ViewElement*>> _viewResizeRequest;
rpl::event_stream<not_null<HistoryItem*>> _itemShowHighlightRequest;
@@ -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(
@@ -403,8 +403,8 @@ HistoryInner::HistoryInner(
mouseActionCancel();
}, lifetime());
session().data().viewRepaintRequest(
) | rpl::on_next([this](not_null<const Element*> view) {
repaintItem(view);
) | rpl::on_next([this](Data::RequestViewRepaint data) {
repaintItem(data.view);
}, lifetime());
session().data().viewLayoutChanged(
) | rpl::filter([=](not_null<const Element*> view) {
@@ -205,8 +205,8 @@ PreviewWrap::PreviewWrap(
const auto session = &_history->session();
session->data().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> view) {
if (_views.contains(view)) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (_views.contains(data.view)) {
update();
}
}, lifetime());
@@ -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(
@@ -109,8 +109,8 @@ PreviewWrap::PreviewWrap(
using namespace HistoryView;
_history->owner().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> view) {
if (view == _item.get()) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == _item.get()) {
update();
}
}, lifetime());
@@ -256,8 +256,8 @@ ReactionView::ReactionView(
- st::msgMargin.bottom();
session->data().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> element) {
if (element == view) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == view) {
update();
}
}, lifetime());
@@ -352,8 +352,8 @@ PreviewWrap::PreviewWrap(
_style->apply(_theme.get());
session->data().viewRepaintRequest(
) | rpl::on_next([=](not_null<const Element*> view) {
if (view == _view->view()) {
) | rpl::on_next([=](Data::RequestViewRepaint data) {
if (data.view == _view->view()) {
update();
}
}, lifetime());