summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorAndreas Buhr <andreas.buhr@qt.io>2021-02-17 20:15:04 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-02-23 16:56:20 +0000
commit7898f6a6aa1fec3638d283ac271f01770453fa12 (patch)
tree2a524651a1b169b090078b260da6eb0b14478fd2 /src/plugins/platforms
parent7f22edc00cf9b72aa95fbb2f1e60dcf7f65d3e60 (diff)
Fix handling of virtual/native pixels in QAndroidPlatformWindow
f92e1953699b2529cc6ea2fd399fe4f2b887e83c made sure a new QAndroidPlatformWindow always has a geometry. However, it did not take into account HiDPI handling. This patch fixes it and introduces proper HiDPI handling. Fixes: QTBUG-91161 Change-Id: Iddf31b7abfd0a1bada3b051ed4de3bf6c2897d8e Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit dec429e0778493bc4e85d6b18202804d0bbbe5f1) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/android/qandroidplatformwindow.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp
index c64805b4e2..e1cf2487fe 100644
--- a/src/plugins/platforms/android/qandroidplatformwindow.cpp
+++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp
@@ -60,14 +60,21 @@ QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window)
m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1;
setWindowState(window->windowStates());
+ // the following is in relation to the virtual geometry
const bool forceMaximize = m_windowState & (Qt::WindowMaximized | Qt::WindowFullScreen);
- const QRect requestedGeometry = forceMaximize ? QRect() : window->geometry();
- const QRect availableGeometry = (window->parent()) ? window->parent()->geometry() : platformScreen()->availableGeometry();
- const QRect finalGeometry = QPlatformWindow::initialGeometry(window, requestedGeometry,
- availableGeometry.width(), availableGeometry.height());
-
- if (requestedGeometry != finalGeometry)
- setGeometry(QHighDpi::toNativePixels(finalGeometry, window));
+ const QRect requestedNativeGeometry =
+ forceMaximize ? QRect() : QHighDpi::toNativePixels(window->geometry(), window);
+ const QRect availableDeviceIndependentGeometry = (window->parent())
+ ? window->parent()->geometry()
+ : QHighDpi::fromNativePixels(platformScreen()->availableGeometry(), window);
+
+ // initialGeometry returns in native pixels
+ const QRect finalNativeGeometry = QPlatformWindow::initialGeometry(
+ window, requestedNativeGeometry, availableDeviceIndependentGeometry.width(),
+ availableDeviceIndependentGeometry.height());
+
+ if (requestedNativeGeometry != finalNativeGeometry)
+ setGeometry(finalNativeGeometry);
}
void QAndroidPlatformWindow::lower()