diff options
Diffstat (limited to 'src/virtualkeyboard/shifthandler.cpp')
-rw-r--r-- | src/virtualkeyboard/shifthandler.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/virtualkeyboard/shifthandler.cpp b/src/virtualkeyboard/shifthandler.cpp index 486dea75..c40fd78e 100644 --- a/src/virtualkeyboard/shifthandler.cpp +++ b/src/virtualkeyboard/shifthandler.cpp @@ -48,6 +48,7 @@ public: autoCapitalizationEnabled(false), toggleShiftEnabled(false), shiftChanged(false), + resetWhenVisible(false), manualShiftLanguageFilter(QSet<QLocale::Language>() << QLocale::Arabic << QLocale::Persian << QLocale::Hindi << QLocale::Korean), manualCapsInputModeFilter(QSet<InputEngine::InputMode>() << InputEngine::Cangjie << InputEngine::Zhuyin), noAutoUppercaseInputModeFilter(QSet<InputEngine::InputMode>() << InputEngine::FullwidthLatin << InputEngine::Pinyin << InputEngine::Cangjie << InputEngine::Zhuyin), @@ -61,6 +62,7 @@ public: bool autoCapitalizationEnabled; bool toggleShiftEnabled; bool shiftChanged; + bool resetWhenVisible; QLocale locale; QTime timer; const QSet<QLocale::Language> manualShiftLanguageFilter; @@ -100,6 +102,7 @@ ShiftHandler::ShiftHandler(InputContext *parent) : connect(d->inputContext, SIGNAL(shiftChanged()), SLOT(shiftChanged())); connect(d->inputContext, SIGNAL(capsLockChanged()), SLOT(shiftChanged())); connect(d->inputContext, SIGNAL(localeChanged()), SLOT(localeChanged())); + connect(qGuiApp->inputMethod(), SIGNAL(visibleChanged()), SLOT(inputMethodVisibleChanged())); d->locale = QLocale(d->inputContext->locale()); } } @@ -255,6 +258,11 @@ void ShiftHandler::autoCapitalize() void ShiftHandler::restart() { + Q_D(ShiftHandler); + if (!qGuiApp->inputMethod()->isVisible()) { + d->resetWhenVisible = true; + return; + } reset(); } @@ -271,6 +279,15 @@ void ShiftHandler::localeChanged() restart(); } +void ShiftHandler::inputMethodVisibleChanged() +{ + Q_D(ShiftHandler); + if (d->resetWhenVisible && qGuiApp->inputMethod()->isVisible()) { + d->resetWhenVisible = false; + reset(); + } +} + void ShiftHandler::setAutoCapitalizationEnabled(bool enabled) { Q_D(ShiftHandler); |