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 fb6f950e0a..2598e1f367 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 353bb68707..c824976cf1 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 50822615c7..984cc0e79e 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 3f78e1850a..b4be01c6d0 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 4ef7b17916..d3452c8ca5 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);