diff --git a/src/plugins/platforms/wasm/qwasmcompositor.cpp b/src/plugins/platforms/wasm/qwasmcompositor.cpp index 9a16ae7719..3883bf3c95 100644 --- a/src/plugins/platforms/wasm/qwasmcompositor.cpp +++ b/src/plugins/platforms/wasm/qwasmcompositor.cpp @@ -110,6 +110,9 @@ void QWasmCompositor::addWindow(QWasmWindow *window, QWasmWindow *parentWindow) else m_compositedWindows[parentWindow].childWindows.append(window); + if (!QGuiApplication::focusWindow()) { + window->requestActivateWindow(); + } notifyTopWindowChanged(window); } @@ -125,6 +128,10 @@ void QWasmCompositor::removeWindow(QWasmWindow *window) m_windowStack.removeAll(window); m_compositedWindows.remove(window); + if (!m_windowStack.isEmpty() && !QGuiApplication::focusWindow()) { + auto lastWindow = m_windowStack.last(); + lastWindow->requestActivateWindow(); + } notifyTopWindowChanged(window); } @@ -734,12 +741,13 @@ void QWasmCompositor::notifyTopWindowChanged(QWasmWindow *window) bool blocked = QGuiApplicationPrivate::instance()->isWindowBlocked(window->window(), &modalWindow); if (blocked) { + modalWindow->requestActivate(); raise(static_cast(modalWindow->handle())); return; } requestRedraw(); - QWindowSystemInterface::handleWindowActivated(window->window()); + } QWasmScreen *QWasmCompositor::screen()