aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-01-06 11:14:07 +0200
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-01-20 17:37:41 +0000
commit839a0afec5c39c92ac7221e2c5b6a866d6848382 (patch)
tree12a6bf83805af3cecc2887518d4ce12098dac817 /tests/auto
parente2c4fde1804654e449465aee1b9d217e05f06075 (diff)
Automatically hide word candidate list
This change adds support for automatically hiding word candidate list when inactive. This feature includes the following enhancements: - Added new settings: * VirtualKeyboardSettings.wordCandidateList.autoHideDelay * VirtualKeyboardSettings.wordCandidateList.alwaysVisible - Automatic hiding of word candidate list when inactive and when autoHideDelay elapsed. - alwaysVisible setting restores the old functionality. - Added new signal selectionListsChanged() to input method, allowing the input method to dynamically allocate or deallocate selection lists. - HunspellInputMethod does not allocate selection list when dictionary cannot be loaded, or Qt::ImhNoPredictiveText is enabled. Also, it will no longer use pre-edit text in this case. - OpenWnnInputMethod does not allocate selection list if not needed. [ChangeLog] Automatically hide word candidate list when inactive. Change-Id: Ifa95ae8a7c47a96719ffdc2929601ff2ef9c0d2e Reviewed-by: Gordan Markus <gordan.markus@pelagicore.com> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/inputpanel/data/inputpanel/inputpanel.qml17
-rw-r--r--tests/auto/inputpanel/data/tst_inputpanel.qml43
2 files changed, 59 insertions, 1 deletions
diff --git a/tests/auto/inputpanel/data/inputpanel/inputpanel.qml b/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
index 1fb37d74..034150be 100644
--- a/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
+++ b/tests/auto/inputpanel/data/inputpanel/inputpanel.qml
@@ -30,7 +30,7 @@
import QtTest 1.0
import QtQuick 2.0
import QtQuick.VirtualKeyboard 2.1
-import QtQuick.VirtualKeyboard.Settings 2.1
+import QtQuick.VirtualKeyboard.Settings 2.2
import "handwriting.js" as Handwriting
import "utils.js" as Utils
@@ -83,6 +83,7 @@ InputPanel {
property alias soundEffectSpy: soundEffectSpy
property alias inputMethodResultSpy: inputMethodResultSpy
property alias wordCandidateListChangedSpy: wordCandidateListChangedSpy
+ property alias wordCandidateListVisibleSpy: wordCandidateListVisibleSpy
property alias shiftStateSpy: shiftStateSpy
signal inputMethodResult(var text)
@@ -164,6 +165,12 @@ InputPanel {
}
SignalSpy {
+ id: wordCandidateListVisibleSpy
+ target: wordCandidateView
+ signalName: "onVisibleConditionChanged"
+ }
+
+ SignalSpy {
id: shiftStateSpy
target: InputContext
signalName: "onShiftChanged"
@@ -207,6 +214,14 @@ InputPanel {
VirtualKeyboardSettings.activeLocales = activeLocales
}
+ function setWclAutoHideDelay(wclAutoHideDelay) {
+ VirtualKeyboardSettings.wordCandidateList.autoHideDelay = wclAutoHideDelay
+ }
+
+ function setWclAlwaysVisible(wclAlwaysVisible) {
+ VirtualKeyboardSettings.wordCandidateList.alwaysVisible = wclAlwaysVisible
+ }
+
function mapInputMode(inputModeName) {
if (inputModeName === "Latin")
return InputEngine.Latin
diff --git a/tests/auto/inputpanel/data/tst_inputpanel.qml b/tests/auto/inputpanel/data/tst_inputpanel.qml
index 9cc1fedb..ffe88cc8 100644
--- a/tests/auto/inputpanel/data/tst_inputpanel.qml
+++ b/tests/auto/inputpanel/data/tst_inputpanel.qml
@@ -78,6 +78,8 @@ Rectangle {
}
function prepareTest(data) {
+ inputPanel.setWclAutoHideDelay(data !== undefined && data.hasOwnProperty("wclAutoHideDelay") ? data.wclAutoHideDelay : 5000)
+ inputPanel.setWclAlwaysVisible(data !== undefined && data.hasOwnProperty("wclAlwaysVisible") && data.wclAlwaysVisible)
container.forceActiveFocus()
if (data !== undefined && data.hasOwnProperty("initText")) {
textInput.text = data.initText
@@ -172,6 +174,14 @@ Rectangle {
property var locale: VirtualKeyboardSettings.locale; \
property var availableLocales: VirtualKeyboardSettings.availableLocales; \
property var activeLocales: VirtualKeyboardSettings.activeLocales }" },
+ { qml: "import QtQuick 2.7; \
+ import QtQuick.VirtualKeyboard.Settings 2.2; \
+ Item { property var styleName: VirtualKeyboardSettings.styleName; \
+ property var locale: VirtualKeyboardSettings.locale; \
+ property var availableLocales: VirtualKeyboardSettings.availableLocales; \
+ property var activeLocales: VirtualKeyboardSettings.activeLocales; \
+ property var wclAutoHideDelay: VirtualKeyboardSettings.wordCandidateList.autoHideDelay; \
+ property var wclAlwaysVisible: VirtualKeyboardSettings.wordCandidateList.alwaysVisible; }" },
]
}
@@ -1569,5 +1579,38 @@ Rectangle {
compare(languagePopupList.visible, false)
}
+
+ function test_wclAutoHide_data() {
+ return [
+ { wclAutoHideDelay: 100, wclAlwaysVisible: false },
+ { wclAutoHideDelay: 0, wclAlwaysVisible: true },
+ { wclAutoHideDelay: 0, wclAlwaysVisible: false },
+ ]
+ }
+
+ function test_wclAutoHide(data) {
+ prepareTest(data)
+ inputPanel.wordCandidateListChangedSpy.clear()
+ Qt.inputMethod.show()
+ waitForRendering(inputPanel)
+ compare(inputPanel.wordCandidateView.visibleCondition, data.wclAlwaysVisible)
+ inputPanel.virtualKeyClick("a")
+ inputPanel.virtualKeyClick("u")
+ inputPanel.virtualKeyClick("t")
+ inputPanel.virtualKeyClick("o")
+ waitForRendering(inputPanel)
+ if (!inputPanel.wordCandidateListVisibleHint)
+ skip("Prediction/spell correction not enabled")
+ inputPanel.wordCandidateListChangedSpy.wait(1000)
+ compare(inputPanel.wordCandidateView.visibleCondition, true)
+ inputPanel.wordCandidateListVisibleSpy.clear()
+ inputPanel.selectionListSelectCurrentItem()
+ if (data.wclAlwaysVisible)
+ wait(data.wclAutoHideDelay + 250)
+ else
+ inputPanel.wordCandidateListVisibleSpy.wait(data.wclAutoHideDelay + 500)
+ waitForRendering(inputPanel)
+ compare(inputPanel.wordCandidateView.visibleCondition, data.wclAlwaysVisible)
+ }
}
}