summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Edmundson <davidedmundson@kde.org>2024-06-19 10:37:45 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2024-07-02 17:56:42 +0000
commit05136d3d63f49b32dbe7ed2caa23519024478375 (patch)
tree60c1118099c703456a1bf4d59c11bce160ca028f
parent75d1aa2dd1adb19e8a16de8ff84eae0529cbbb68 (diff)
Use device pixel ratio of the window rather than the screen
Window device pixel ratio can differ from the screen depending on the platform. The window is the more authorative source with new events in Qt to support that. In Chromium the rendering is still based off a screen factor, but each view will have a completely independent set of screen variables, so we can adjust the screen to match our current view. Chromium itself also alters the screen scale factor on a per window basis for their own native Wayland backend or if recording a window. Fixes: QTBUG-113574 Change-Id: I12231c826525a9d7b5e30eed10324f65fbf8c16f Reviewed-by: Moss Heim <moss.heim@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io> (cherry picked from commit 21a9add47def34322b799683e1e1daff88dc4a06) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/core/render_widget_host_view_qt.cpp5
-rw-r--r--src/core/render_widget_host_view_qt_delegate_item.cpp2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 98d0471c1..4405de46c 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -876,6 +876,11 @@ bool RenderWidgetHostViewQt::updateScreenInfo()
return false;
display::ScreenInfos newScreenInfos = screenInfosFromQtForUpdate(window->screen());
+
+ // We always want to use the scale from our current window
+ // This screen information is stored on a per-view basis
+ auto &screen = newScreenInfos.mutable_current();
+ screen.device_scale_factor = window->devicePixelRatio();
if (screen_infos_ == newScreenInfos)
return false;
diff --git a/src/core/render_widget_host_view_qt_delegate_item.cpp b/src/core/render_widget_host_view_qt_delegate_item.cpp
index 23e5bc935..a9f872220 100644
--- a/src/core/render_widget_host_view_qt_delegate_item.cpp
+++ b/src/core/render_widget_host_view_qt_delegate_item.cpp
@@ -345,6 +345,8 @@ void RenderWidgetHostViewQtDelegateItem::itemChange(ItemChange change, const Ite
if (!m_isPopup)
onHide();
}
+ } else if (change == QQuickItem::ItemDevicePixelRatioHasChanged) {
+ m_client->visualPropertiesChanged();
}
}