diff options
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformwindow.cpp')
| -rw-r--r-- | src/plugins/platforms/android/qandroidplatformwindow.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformwindow.cpp b/src/plugins/platforms/android/qandroidplatformwindow.cpp index 1989ecdee3c..de0271edb56 100644 --- a/src/plugins/platforms/android/qandroidplatformwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformwindow.cpp @@ -397,28 +397,33 @@ void QAndroidPlatformWindow::safeAreaMarginsChanged(JNIEnv *env, jobject object, if (!qGuiApp) return; - QMargins safeMargins; - if (insets.isValid()) { - safeMargins = QMargins( - insets.getField<int>("left"), - insets.getField<int>("top"), - insets.getField<int>("right"), - insets.getField<int>("bottom")); - } + if (!insets.isValid()) + return; + QAndroidPlatformWindow *pWindow = nullptr; for (QWindow *window : qGuiApp->allWindows()) { if (!window->handle()) continue; - QAndroidPlatformWindow *pWindow = static_cast<QAndroidPlatformWindow *>(window->handle()); - if (pWindow->nativeViewId() != id) - continue; - - if (safeMargins != pWindow->safeAreaMargins()) { - pWindow->setSafeAreaMargins(safeMargins); - QWindowSystemInterface::handleSafeAreaMarginsChanged(window); + QAndroidPlatformWindow *pw = static_cast<QAndroidPlatformWindow *>(window->handle()); + if (pw->nativeViewId() == id) { + pWindow = pw; break; } } + + if (!pWindow) + return; + + QMargins safeMargins = QMargins( + insets.getField<int>("left"), + insets.getField<int>("top"), + insets.getField<int>("right"), + insets.getField<int>("bottom")); + + if (safeMargins != pWindow->safeAreaMargins()) { + pWindow->setSafeAreaMargins(safeMargins); + QWindowSystemInterface::handleSafeAreaMarginsChanged(pWindow->window()); + } } static void updateWindows(JNIEnv *env, jobject object) |
