summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPiotr Mikolajczyk <piotr.mikolajczyk@qt.io>2020-11-16 11:46:16 +0100
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-11-17 10:48:05 +0000
commitf92e1953699b2529cc6ea2fd399fe4f2b887e83c (patch)
treeafb92b9c1bbaa1f81050a62f861bbbb4aa7d0a16 /src
parentf6f68409a40beaa5f034c411dd7e296c7828d8fd (diff)
Android: Ensure windows always have a geometry on creation
A QWindow created without an explicit geometry needs to pick up a default geometry in the platform plugin. If the window has a maximized of fullscreen window state, it will fill the entire available geometry of the parent window (or the screen if there's not parent window). Fixes: QTBUG-69159 Fixes: QTBUG-69156 Fixes: QTBUG-69154 Pick-to: 5.15 Change-Id: If8565d92a97bb4b3fa44757e68969d54d0bc7ebe Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/android/qandroidplatformwindow.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp
index a88cb9b823..c64805b4e2 100644
--- a/src/plugins/platforms/android/qandroidplatformwindow.cpp
+++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp
@@ -46,6 +46,7 @@
#include <qguiapplication.h>
#include <qpa/qwindowsysteminterface.h>
+#include <private/qhighdpiscaling_p.h>
QT_BEGIN_NAMESPACE
@@ -58,6 +59,15 @@ QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window)
m_windowState = Qt::WindowNoState;
m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1;
setWindowState(window->windowStates());
+
+ 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));
}
void QAndroidPlatformWindow::lower()