From 10cf8c8fde61f6b0205d84cb7bc2e529918477a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Thu, 4 Jul 2024 13:51:43 +0200 Subject: [PATCH] Android: Simplify QAndroidPlatformWindow::setGeometry plumbing Instead of splitting the geometry setting into setGeometry and setNativeGeometry we can leave setGeometry to do the right choice of whether to propagate the geometry to the QtWindow layout or not. Change-Id: I30291dbf7079df76f4d3a54d6ea3c9c3f1329c90 Reviewed-by: Petri Virkkunen Reviewed-by: Assam Boudjelthia (cherry picked from commit b3e60c5acfaf809f376f66d6ab7f98ca644b0fce) Reviewed-by: Qt Cherry-pick Bot --- .../android/qandroidplatformforeignwindow.cpp | 11 ------ .../android/qandroidplatformforeignwindow.h | 1 - .../android/qandroidplatformopenglwindow.cpp | 3 -- .../android/qandroidplatformvulkanwindow.cpp | 2 -- .../android/qandroidplatformwindow.cpp | 34 +++++++++---------- .../android/qandroidplatformwindow.h | 1 - 6 files changed, 17 insertions(+), 35 deletions(-) diff --git a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp index af09c34d0ba..7fe106ffe25 100644 --- a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp @@ -42,17 +42,6 @@ QAndroidPlatformForeignWindow::~QAndroidPlatformForeignWindow() } -void QAndroidPlatformForeignWindow::setGeometry(const QRect &rect) -{ - QAndroidPlatformWindow::setGeometry(rect); - - if (isEmbeddingContainer()) - return; - - if (m_nativeViewInserted) - setNativeGeometry(rect); -} - void QAndroidPlatformForeignWindow::setVisible(bool visible) { if (isEmbeddingContainer()) { diff --git a/src/plugins/platforms/android/qandroidplatformforeignwindow.h b/src/plugins/platforms/android/qandroidplatformforeignwindow.h index 6238731a4a1..1864977be9c 100644 --- a/src/plugins/platforms/android/qandroidplatformforeignwindow.h +++ b/src/plugins/platforms/android/qandroidplatformforeignwindow.h @@ -18,7 +18,6 @@ public: explicit QAndroidPlatformForeignWindow(QWindow *window, WId nativeHandle); void initialize() override; ~QAndroidPlatformForeignWindow(); - void setGeometry(const QRect &rect) override; void setVisible(bool visible) override; void applicationStateChanged(Qt::ApplicationState state) override; bool isForeignWindow() const override { return true; } diff --git a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp index 13d14eb3913..15d8abd85e8 100644 --- a/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformopenglwindow.cpp @@ -46,9 +46,6 @@ void QAndroidPlatformOpenGLWindow::setGeometry(const QRect &rect) QAndroidPlatformWindow::setGeometry(rect); - - setNativeGeometry(rect); - QRect availableGeometry = screen()->availableGeometry(); if (rect.width() > 0 && rect.height() > 0 diff --git a/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp b/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp index 4bf4f44fa10..721ea3964b6 100644 --- a/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformvulkanwindow.cpp @@ -39,8 +39,6 @@ void QAndroidPlatformVulkanWindow::setGeometry(const QRect &rect) m_oldGeometry = geometry(); QAndroidPlatformWindow::setGeometry(rect); - if (m_surfaceCreated) - setNativeGeometry(rect); QRect availableGeometry = screen()->availableGeometry(); if (rect.width() > 0 diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp index d34fe5bbc59..1d419495e42 100644 --- a/src/plugins/platforms/android/qandroidplatformwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp @@ -136,6 +136,23 @@ QMargins QAndroidPlatformWindow::safeAreaMargins() const void QAndroidPlatformWindow::setGeometry(const QRect &rect) { QPlatformWindow::setGeometry(rect); + + if (!isEmbeddingContainer()) { + Q_ASSERT(m_nativeQtWindow.isValid()); + + jint x = 0; + jint y = 0; + jint w = -1; + jint h = -1; + if (!rect.isNull()) { + x = rect.x(); + y = rect.y(); + w = rect.width(); + h = rect.height(); + } + m_nativeQtWindow.callMethod("setGeometry", x, y, w, h); + } + QWindowSystemInterface::handleGeometryChange(window(), rect); } @@ -293,23 +310,6 @@ void QAndroidPlatformWindow::destroySurface() } } -void QAndroidPlatformWindow::setNativeGeometry(const QRect &geometry) -{ - Q_ASSERT(m_nativeQtWindow.isValid()); - - jint x = 0; - jint y = 0; - jint w = -1; - jint h = -1; - if (!geometry.isNull()) { - x = geometry.x(); - y = geometry.y(); - w = geometry.width(); - h = geometry.height(); - } - m_nativeQtWindow.callMethod("setGeometry", x, y, w, h); -} - void QAndroidPlatformWindow::onSurfaceChanged(QtJniTypes::Surface surface) { lockSurface(); diff --git a/src/plugins/platforms/android/qandroidplatformwindow.h b/src/plugins/platforms/android/qandroidplatformwindow.h index 3c94dec3ea2..221b98fce55 100644 --- a/src/plugins/platforms/android/qandroidplatformwindow.h +++ b/src/plugins/platforms/android/qandroidplatformwindow.h @@ -73,7 +73,6 @@ protected: void unlockSurface() { m_surfaceMutex.unlock(); } void createSurface(); void destroySurface(); - void setNativeGeometry(const QRect &geometry); void sendExpose() const; bool blockedByModal() const; bool isEmbeddingContainer() const;