diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qinputmethod.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/gui/kernel/qinputmethod.cpp b/src/gui/kernel/qinputmethod.cpp index f5de06aea1..f358cc87fd 100644 --- a/src/gui/kernel/qinputmethod.cpp +++ b/src/gui/kernel/qinputmethod.cpp @@ -426,13 +426,17 @@ QVariant QInputMethod::queryFocusObject(Qt::InputMethodQuery query, const QVaria if (!focusObject) return retval; - bool newMethodWorks = QMetaObject::invokeMethod(focusObject, "inputMethodQuery", - Qt::DirectConnection, - Q_RETURN_ARG(QVariant, retval), - Q_ARG(Qt::InputMethodQuery, query), - Q_ARG(QVariant, argument)); - if (newMethodWorks) + static const char *signature = "inputMethodQuery(Qt::InputMethodQuery,QVariant)"; + const bool newMethodSupported = focusObject->metaObject()->indexOfMethod(signature) != -1; + if (newMethodSupported) { + const bool ok = QMetaObject::invokeMethod(focusObject, "inputMethodQuery", + Qt::DirectConnection, + Q_RETURN_ARG(QVariant, retval), + Q_ARG(Qt::InputMethodQuery, query), + Q_ARG(QVariant, argument)); + Q_ASSERT(ok); return retval; + } QInputMethodQueryEvent queryEvent(query); QCoreApplication::sendEvent(focusObject, &queryEvent); |