diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformwindow.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformwindow.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp index 4f691ce112..c9705157a5 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,22 @@ QAndroidPlatformWindow::QAndroidPlatformWindow(QWindow *window) m_windowState = Qt::WindowNoState; 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 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() @@ -73,6 +90,7 @@ void QAndroidPlatformWindow::raise() void QAndroidPlatformWindow::setGeometry(const QRect &rect) { + QPlatformWindow::setGeometry(rect); QWindowSystemInterface::handleGeometryChange(window(), rect); } |