aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2016-11-12 22:28:51 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-01-30 15:18:19 +0000
commit57d7fae10dbd5a2fd01fdd89c3aeb1024c9a0295 (patch)
tree750f3d1bd16917dc93d4b9601e67cf40aebb6028
parentc683d8fd4d2d0b5f61014c1840d148a2d8faaac4 (diff)
Defer shift state change until input panel becomes visible
Monitor the visible state of the QInputMethod and defer shift state handling until it becomes visible. Task-number: QTBUG-57082 Change-Id: I6e63e57e2630de37d49a522f05257c9c4dd72286 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit b87766345e7089670629b1c75e9c350846849dac)
-rw-r--r--src/virtualkeyboard/shifthandler.cpp18
-rw-r--r--src/virtualkeyboard/shifthandler.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/src/virtualkeyboard/shifthandler.cpp b/src/virtualkeyboard/shifthandler.cpp
index 22302129..f65938ec 100644
--- a/src/virtualkeyboard/shifthandler.cpp
+++ b/src/virtualkeyboard/shifthandler.cpp
@@ -24,6 +24,7 @@
#include "inputengine.h"
#include <QtCore/private/qobject_p.h>
#include <QSet>
+#include <QGuiApplication>
namespace QtVirtualKeyboard {
@@ -37,6 +38,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),
@@ -49,6 +51,7 @@ public:
bool autoCapitalizationEnabled;
bool toggleShiftEnabled;
bool shiftChanged;
+ bool resetWhenVisible;
QLocale locale;
const QSet<QLocale::Language> manualShiftLanguageFilter;
const QSet<InputEngine::InputMode> manualCapsInputModeFilter;
@@ -85,6 +88,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());
}
}
@@ -229,6 +233,11 @@ void ShiftHandler::autoCapitalize()
void ShiftHandler::restart()
{
+ Q_D(ShiftHandler);
+ if (!qGuiApp->inputMethod()->isVisible()) {
+ d->resetWhenVisible = true;
+ return;
+ }
reset();
}
@@ -245,6 +254,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);
diff --git a/src/virtualkeyboard/shifthandler.h b/src/virtualkeyboard/shifthandler.h
index f6f2e795..ceda04d0 100644
--- a/src/virtualkeyboard/shifthandler.h
+++ b/src/virtualkeyboard/shifthandler.h
@@ -61,6 +61,7 @@ private slots:
void restart();
void localeChanged();
void shiftChanged();
+ void inputMethodVisibleChanged();
private:
void setAutoCapitalizationEnabled(bool enabled);