diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2024-04-05 15:59:02 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2024-04-18 15:25:22 +0200 |
commit | f480b5991433c9c01383ea02402ca653371060ff (patch) | |
tree | edc181074acac7da3e6302dd189b962f8f21a544 /src/plugins | |
parent | f9c9981524a8c2f66375c0a7a07540ac333f0ef0 (diff) |
iOS: Track virtual keyboard gestures via focus window instead of screen
We're moving away from the screen managing a UIWindow, so let's track
the UIWindow via the focus window instead.
Task-number: QTBUG-121781
Change-Id: I943b1d501f743c51b3f1484aecbe008c6dae8cd4
Reviewed-by: Doris Verria <doris.verria@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Reviewed-by: Amr Elsayed <amr.elsayed@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/platforms/ios/qiosinputcontext.mm | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/plugins/platforms/ios/qiosinputcontext.mm b/src/plugins/platforms/ios/qiosinputcontext.mm index d4f81f22e3..5716ad041e 100644 --- a/src/plugins/platforms/ios/qiosinputcontext.mm +++ b/src/plugins/platforms/ios/qiosinputcontext.mm @@ -22,13 +22,11 @@ // ------------------------------------------------------------------------- -#if !defined(Q_OS_VISIONOS) static QUIView *focusView() { return qApp->focusWindow() ? reinterpret_cast<QUIView *>(qApp->focusWindow()->winId()) : 0; } -#endif // ------------------------------------------------------------------------- @@ -305,11 +303,7 @@ QIOSInputContext::QIOSInputContext() , m_keyboardHideGesture([[QIOSKeyboardListener alloc] initWithQIOSInputContext:this]) , m_textResponder(0) { - if (isQtApplication()) { - QIOSScreen *iosScreen = static_cast<QIOSScreen*>(QGuiApplication::primaryScreen()->handle()); - [iosScreen->uiWindow() addGestureRecognizer:m_keyboardHideGesture]; - } - + Q_ASSERT(!qGuiApp->focusWindow()); connect(qGuiApp, &QGuiApplication::focusWindowChanged, this, &QIOSInputContext::focusWindowChanged); } @@ -613,12 +607,15 @@ void QIOSInputContext::setFocusObject(QObject *focusObject) void QIOSInputContext::focusWindowChanged(QWindow *focusWindow) { - Q_UNUSED(focusWindow); - qImDebug() << "new focus window =" << focusWindow; reset(); + if (isQtApplication()) { + [m_keyboardHideGesture.view removeGestureRecognizer:m_keyboardHideGesture]; + [focusView().window addGestureRecognizer:m_keyboardHideGesture]; + } + // The keyboard rectangle depend on the focus window, so // we need to re-evaluate the keyboard state. updateKeyboardState(); |