diff options
Diffstat (limited to 'src/gui/kernel/qinputmethod.cpp')
| -rw-r--r-- | src/gui/kernel/qinputmethod.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/gui/kernel/qinputmethod.cpp b/src/gui/kernel/qinputmethod.cpp index 438c169f718..495ea8f6e7d 100644 --- a/src/gui/kernel/qinputmethod.cpp +++ b/src/gui/kernel/qinputmethod.cpp @@ -45,6 +45,8 @@ #include <qtimer.h> #include <qpa/qplatforminputcontext_p.h> +#include <QDebug> + QT_BEGIN_NAMESPACE /*! @@ -365,6 +367,29 @@ bool QInputMethodPrivate::objectAcceptsInputMethod(QObject *object) return enabled; } +/*! + Send \a query to the current focus object with parameters \a argument and return the result. + */ +QVariant QInputMethod::queryFocusObject(Qt::InputMethodQuery query, QVariant argument) +{ + QVariant retval; + QObject *focusObject = qGuiApp->focusObject(); + 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) + return retval; + + QInputMethodQueryEvent queryEvent(query); + QCoreApplication::sendEvent(focusObject, &queryEvent); + return queryEvent.value(query); +} + QT_END_NAMESPACE #include "moc_qinputmethod.cpp" |
