diff --git a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java index 135f61d0a02..47b6371ffdb 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtWindow.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtWindow.java @@ -33,6 +33,13 @@ class QtWindow extends QtLayout implements QtSurfaceInterface { setParent(parentWindow); setFocusableInTouchMode(true); + // Views are by default visible, but QWindows are not. + // We should ideally pick up the actual QWindow state here, + // but QWindowPrivate::setVisible() expects to control the + // order of events tightly, so we need to wait for a call + // to QAndroidPlatformWindow::setVisible(). + setVisible(false); + if (!isForeignWindow) { m_editText = new QtEditText(context, listener); addView(m_editText, new QtLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, diff --git a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp index 6bb0081a810..3139114d0a8 100644 --- a/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp +++ b/src/plugins/platforms/android/qandroidplatformforeignwindow.cpp @@ -53,6 +53,7 @@ void QAndroidPlatformForeignWindow::setVisible(bool visible) return; QtAndroid::setViewVisibility(m_view.object(), visible); + m_nativeQtWindow.callMethod("setVisible", visible); if (!visible && m_nativeViewInserted) { m_nativeQtWindow.callMethod("removeNativeView");