aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard/shifthandler.cpp
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-03-12 16:41:07 +0100
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2020-03-26 11:32:02 +0100
commitd2648237c7e3bfc03077b7b1e63c72dc24ff519c (patch)
tree903c3eed9283d54437d9748b3b1533fec7e25aa8 /src/virtualkeyboard/shifthandler.cpp
parent007ac4095d554d6cad9c795ab5cb888a255db397 (diff)
Auto-capitalize only after space following a sentence-ending characterv5.15.0-beta3
A dot alone should not change to capital letters, only the space following the dot. This is standard behavior on mobile platforms. In inputmethods that support auto-completion and auto-space-insertion, we need to watch out if the auto-inserted space triggered auto- capitalization. If so, then the inserted text needs to be capitalized even though the keyboard will have shown lower-case characters. Fixes: QTBUG-77673 Change-Id: Icd907055d6557a7756468318fba5669eb8f62a28 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/virtualkeyboard/shifthandler.cpp')
-rw-r--r--src/virtualkeyboard/shifthandler.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/virtualkeyboard/shifthandler.cpp b/src/virtualkeyboard/shifthandler.cpp
index d268282e..b2d44f95 100644
--- a/src/virtualkeyboard/shifthandler.cpp
+++ b/src/virtualkeyboard/shifthandler.cpp
@@ -298,14 +298,14 @@ void ShiftHandler::autoCapitalize()
bool preferLowerCase = d->inputContext->inputMethodHints() & Qt::ImhPreferLowercase;
if (cursorPosition == 0) {
setShiftActive(!preferLowerCase);
- } else {
+ } else { // space after sentence-ending character triggers auto-capitalization
QString text = d->inputContext->surroundingText();
text.truncate(cursorPosition);
- text = text.trimmed();
- if (text.length() == 0)
- setShiftActive(!preferLowerCase);
- else if (text.length() > 0 && d->sentenceEndingCharacters.indexOf(text[text.length() - 1]) >= 0)
+ if (text.trimmed().length() == 0)
setShiftActive(!preferLowerCase);
+ else if (text.endsWith(QLatin1Char(' ')))
+ setShiftActive(d->sentenceEndingCharacters.contains(text.rightRef(2)[0])
+ && !preferLowerCase);
else
setShiftActive(false);
}