diff options
author | Tang Haixiang <tanghaixiang@uniontech.com> | 2020-09-23 13:50:59 +0800 |
---|---|---|
committer | Tang Haixiang <tanghaixiang@uniontech.com> | 2021-07-20 05:04:28 +0000 |
commit | d5e8efd8cb02876dc314da0579d33af39ba38495 (patch) | |
tree | 1bda93b81d885264cf37a479c19f9a36958e9b7a /src/widgets | |
parent | a11d7663a830321272e40561b98e82b7081afcec (diff) |
Always update the input method when QLineEdit receives focus
The line edit receiving focus might require different input method
capabilities (e.g. be a password edit), so the input method needs to
be refreshed when focus is received. This implicitly happens on tab
focus when the text is selected or the cursor is moved within an
input mask, but neither of those might happen, and for click-focus
it never happened.
Fixes: QTBUG-86846
Pick-to: 5.15 6.1 6.2
Done-with: Volker Hilsheimer <volker.hilsheimer@qt.io>
Change-Id: I47c5275d3a9d4d190ebce64269a345431346c17c
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 35569d6eeb..c45df84dcf 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -1905,8 +1905,11 @@ void QLineEdit::focusInEvent(QFocusEvent *e) d->control->moveCursor(d->control->nextMaskBlank(0)); else if (!d->control->hasSelectedText()) selectAll(); + else + updateMicroFocus(); } else if (e->reason() == Qt::MouseFocusReason) { d->clickCausedFocus = 1; + updateMicroFocus(); } #ifdef QT_KEYPAD_NAVIGATION if (!QApplicationPrivate::keypadNavigationEnabled() || (hasEditFocus() && ( e->reason() == Qt::PopupFocusReason))) { |