diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-01-19 16:54:34 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-29 19:45:35 +0000 |
commit | 97f4366202d170f8c64df2a9f92d457c69b565cc (patch) | |
tree | b47cdb03972f84d400d282a6df6f306c78de6c63 /src/gui/kernel/qguiapplication.cpp | |
parent | a34054c75e18326d10328baa9e39fc9eab0cbfc9 (diff) |
QLineEdit: Disable input methods for password unless IME supports hidden text
Move the checking logic from QGuiApplicationPrivate::_q_updateFocusObject()
to QInputMethodPrivate::objectAcceptsInputMethod(), which is also called
from QWidget::updateMicroFocus() via QInputMethod::update().
Fixes: QTBUG-56767
Change-Id: Ia4cce5e7e766008df891537048d5daf739c010ff
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 14 |
1 files changed, 2 insertions, 12 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 9bf2a33e2a..34f453341f 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -84,6 +84,7 @@ #include "private/qcursor_p.h" #include "private/qopenglcontext_p.h" #include "private/qinputdevicemanager_p.h" +#include "private/qinputmethod_p.h" #include "private/qtouchdevice_p.h" #include <qpa/qplatformthemefactory_p.h> @@ -4030,18 +4031,7 @@ void QGuiApplicationPrivate::_q_updateFocusObject(QObject *object) Q_Q(QGuiApplication); QPlatformInputContext *inputContext = platformIntegration()->inputContext(); - bool enabled = false; - if (object && inputContext) { - QInputMethodQueryEvent query(Qt::ImEnabled | Qt::ImHints); - QGuiApplication::sendEvent(object, &query); - enabled = query.value(Qt::ImEnabled).toBool(); - if (enabled) { - static const bool supportsHiddenText = inputContext->hasCapability(QPlatformInputContext::HiddenTextCapability); - const Qt::InputMethodHints hints = static_cast<Qt::InputMethodHints>(query.value(Qt::ImHints).toInt()); - if ((hints & Qt::ImhHiddenText) && !supportsHiddenText) - enabled = false; - } - } + const bool enabled = inputContext && QInputMethodPrivate::objectAcceptsInputMethod(object); QPlatformInputContextPrivate::setInputMethodAccepted(enabled); if (inputContext) |