From e2439984ae486c7fff6f634a5273028bc51f64ff Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 9 Jan 2024 21:51:05 -0800 Subject: [PATCH] Pass whole point in mapFromGlobal(mapToGlobal). Fixes #27237. --- .../history/admin_log/history_admin_log_inner.cpp | 6 +++--- .../SourceFiles/history/history_inner_widget.cpp | 12 +++++++----- .../history/view/history_view_list_widget.cpp | 6 +++--- .../SourceFiles/window/window_session_controller.cpp | 2 +- .../SourceFiles/window/window_session_controller.h | 6 +++--- 5 files changed, 17 insertions(+), 15 deletions(-) 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 fb6f950e0..2598e1f36 100644 --- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp +++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp @@ -943,10 +943,10 @@ void InnerWidget::paintEvent(QPaintEvent *e) { auto clip = e->rect(); auto context = _controller->preparePaintContext({ .theme = _theme.get(), - .visibleAreaTop = _visibleTop, - .visibleAreaTopGlobal = mapToGlobal(QPoint(0, _visibleTop)).y(), - .visibleAreaWidth = width(), .clip = clip, + .visibleAreaPositionGlobal = mapToGlobal(QPoint(0, _visibleTop)), + .visibleAreaTop = _visibleTop, + .visibleAreaWidth = width(), }); if (_items.empty() && _upLoaded && _downLoaded) { paintEmpty(p, context.st); diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp index 353bb6870..c824976cf 100644 --- a/Telegram/SourceFiles/history/history_inner_widget.cpp +++ b/Telegram/SourceFiles/history/history_inner_widget.cpp @@ -979,14 +979,16 @@ void HistoryInner::paintEmpty( Ui::ChatPaintContext HistoryInner::preparePaintContext( const QRect &clip) const { - const auto visibleAreaTopGlobal = mapToGlobal( - QPoint(0, _visibleAreaTop)).y(); + const auto visibleAreaPositionGlobal = mapToGlobal( + QPoint(0, _visibleAreaTop)); + const auto visibleAreaPositionLocal = mapFromGlobal( + visibleAreaPositionGlobal); return _controller->preparePaintContext({ .theme = _theme.get(), - .visibleAreaTop = _visibleAreaTop, - .visibleAreaTopGlobal = visibleAreaTopGlobal, - .visibleAreaWidth = width(), .clip = clip, + .visibleAreaPositionGlobal = visibleAreaPositionGlobal, + .visibleAreaTop = _visibleAreaTop, + .visibleAreaWidth = width(), }); } diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp index 50822615c..984cc0e79 100644 --- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp +++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp @@ -2009,10 +2009,10 @@ Ui::ChatPaintContext ListWidget::preparePaintContext( const QRect &clip) const { return controller()->preparePaintContext({ .theme = _delegate->listChatTheme(), - .visibleAreaTop = _visibleTop, - .visibleAreaTopGlobal = mapToGlobal(QPoint(0, _visibleTop)).y(), - .visibleAreaWidth = width(), .clip = clip, + .visibleAreaPositionGlobal = mapToGlobal(QPoint(0, _visibleTop)), + .visibleAreaTop = _visibleTop, + .visibleAreaWidth = width(), }); } diff --git a/Telegram/SourceFiles/window/window_session_controller.cpp b/Telegram/SourceFiles/window/window_session_controller.cpp index 3f78e1850..b4be01c6d 100644 --- a/Telegram/SourceFiles/window/window_session_controller.cpp +++ b/Telegram/SourceFiles/window/window_session_controller.cpp @@ -2742,7 +2742,7 @@ void SessionController::openPeerStories( HistoryView::PaintContext SessionController::preparePaintContext( PaintContextArgs &&args) { const auto visibleAreaTopLocal = content()->mapFromGlobal( - QPoint(0, args.visibleAreaTopGlobal)).y(); + args.visibleAreaPositionGlobal).y(); const auto viewport = QRect( 0, args.visibleAreaTop - visibleAreaTopLocal, diff --git a/Telegram/SourceFiles/window/window_session_controller.h b/Telegram/SourceFiles/window/window_session_controller.h index 4ef7b1791..d3452c8ca 100644 --- a/Telegram/SourceFiles/window/window_session_controller.h +++ b/Telegram/SourceFiles/window/window_session_controller.h @@ -565,10 +565,10 @@ public: struct PaintContextArgs { not_null theme; - int visibleAreaTop = 0; - int visibleAreaTopGlobal = 0; - int visibleAreaWidth = 0; QRect clip; + QPoint visibleAreaPositionGlobal; + int visibleAreaTop = 0; + int visibleAreaWidth = 0; }; [[nodiscard]] Ui::ChatPaintContext preparePaintContext( PaintContextArgs &&args);