From e42eefe0441f5ebb7e135974cd277d040220e029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 18 Aug 2021 21:05:19 +0200 Subject: [PATCH] macOS: Implement QPlatformInputContext::setFocusObject() Instead of handling the update manually. Pick-to: 6.2 Change-Id: Iffb28d893146f5d3f6eae8e8c43aaf7fa5281516 Reviewed-by: Volker Hilsheimer --- src/plugins/platforms/cocoa/qcocoainputcontext.h | 6 ++---- src/plugins/platforms/cocoa/qcocoainputcontext.mm | 10 +--------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoainputcontext.h b/src/plugins/platforms/cocoa/qcocoainputcontext.h index 07317f7705..2b97ab6a82 100644 --- a/src/plugins/platforms/cocoa/qcocoainputcontext.h +++ b/src/plugins/platforms/cocoa/qcocoainputcontext.h @@ -57,15 +57,13 @@ public: bool isValid() const override { return true; } + void setFocusObject(QObject *object) override; + void reset() override; QLocale locale() const override { return m_locale; } void updateLocale(); -private Q_SLOTS: - void connectSignals(); - void focusObjectChanged(QObject *focusObject); - private: QPointer m_focusWindow; QLocale m_locale; diff --git a/src/plugins/platforms/cocoa/qcocoainputcontext.mm b/src/plugins/platforms/cocoa/qcocoainputcontext.mm index c5e0e80f76..b700551b9a 100644 --- a/src/plugins/platforms/cocoa/qcocoainputcontext.mm +++ b/src/plugins/platforms/cocoa/qcocoainputcontext.mm @@ -84,8 +84,6 @@ QCocoaInputContext::QCocoaInputContext() : QPlatformInputContext() , m_focusWindow(QGuiApplication::focusWindow()) { - QMetaObject::invokeMethod(this, "connectSignals", Qt::QueuedConnection); - m_inputSourceObserver = QMacNotificationObserver(nil, NSTextInputContextKeyboardSelectionDidChangeNotification, [&]() { qCDebug(lcQpaInputMethods) << "Text input source changed"; @@ -123,13 +121,7 @@ void QCocoaInputContext::reset() } } -void QCocoaInputContext::connectSignals() -{ - connect(qApp, SIGNAL(focusObjectChanged(QObject*)), this, SLOT(focusObjectChanged(QObject*))); - focusObjectChanged(qApp->focusObject()); -} - -void QCocoaInputContext::focusObjectChanged(QObject *focusObject) +void QCocoaInputContext::setFocusObject(QObject *focusObject) { qCDebug(lcQpaInputMethods) << "Focus object changed to" << focusObject;