From f92e1953699b2529cc6ea2fd399fe4f2b887e83c Mon Sep 17 00:00:00 2001 From: Piotr Mikolajczyk Date: Mon, 16 Nov 2020 11:46:16 +0100 Subject: Android: Ensure windows always have a geometry on creation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ø --- src/plugins/platforms/android/qandroidplatformwindow.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/plugins/platforms/android') 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 #include +#include 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() -- cgit v1.2.3