From f92e1953699b2529cc6ea2fd399fe4f2b887e83c Mon Sep 17 00:00:00 2001 From: Piotr Mikolajczyk Date: Mon, 16 Nov 2020 11:46:16 +0100 Subject: [PATCH] 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ø --- .../platforms/android/qandroidplatformwindow.cpp | 10 ++++++++++ tests/auto/gui/kernel/qwindow/BLACKLIST | 9 --------- 2 files changed, 10 insertions(+), 9 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 #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() diff --git a/tests/auto/gui/kernel/qwindow/BLACKLIST b/tests/auto/gui/kernel/qwindow/BLACKLIST index 410ba54f3d..6c500ba22c 100644 --- a/tests/auto/gui/kernel/qwindow/BLACKLIST +++ b/tests/auto/gui/kernel/qwindow/BLACKLIST @@ -10,9 +10,6 @@ macos ci # QTBUG-69160 opensuse-leap android -[setVisible] -# QTBUG-69154 -android [modalWindowEnterEventOnHide_QTBUG35109] osx android @@ -23,15 +20,9 @@ windows-10 android [testInputEvents] rhel-7.4 -[initialSize] -# QTBUG-69159 -android [modalWindowPosition] # QTBUG-69161 android -[childWindowPositioning:show] -# QTBUG-69156 -android # QTBUG-87392 [paintEvent] android