aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/shadowinput
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/shadowinput')
-rw-r--r--tests/auto/shadowinput/CMakeLists.txt17
-rw-r--r--tests/auto/shadowinput/data/inputpanel/inputpanel.qml24
-rw-r--r--tests/auto/shadowinput/data/tst_shadowinput.qml92
-rw-r--r--tests/auto/shadowinput/tst_shadowinput.cpp23
4 files changed, 156 insertions, 0 deletions
diff --git a/tests/auto/shadowinput/CMakeLists.txt b/tests/auto/shadowinput/CMakeLists.txt
new file mode 100644
index 00000000..e7668ba8
--- /dev/null
+++ b/tests/auto/shadowinput/CMakeLists.txt
@@ -0,0 +1,17 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+# Collect test data
+file(GLOB_RECURSE test_data_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/data/*)
+list(APPEND test_data ${test_data_glob})
+
+qt_internal_add_test(tst_shadowinput
+ QMLTEST
+ SOURCES
+ tst_shadowinput.cpp
+ LIBRARIES
+ Qt::Gui
+ TESTDATA ${test_data}
+)
diff --git a/tests/auto/shadowinput/data/inputpanel/inputpanel.qml b/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
new file mode 100644
index 00000000..9879c40f
--- /dev/null
+++ b/tests/auto/shadowinput/data/inputpanel/inputpanel.qml
@@ -0,0 +1,24 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtTest
+import QtQuick
+import QtQuick.VirtualKeyboard
+import QtQuick.VirtualKeyboard.Settings
+
+InputPanel {
+ id: inputPanel
+ z: 99
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.bottom: parent.bottom
+ visible: active
+ property bool fullScreenMode: true
+ property bool shadowInputVisible: keyboard.shadowInputControl.visible
+ property string shadowInputText: keyboard.shadowInputControl.textEdit.text
+ Binding {
+ target: VirtualKeyboardSettings
+ property: "fullScreenMode"
+ value: inputPanel.fullScreenMode
+ }
+}
diff --git a/tests/auto/shadowinput/data/tst_shadowinput.qml b/tests/auto/shadowinput/data/tst_shadowinput.qml
new file mode 100644
index 00000000..fbe79c82
--- /dev/null
+++ b/tests/auto/shadowinput/data/tst_shadowinput.qml
@@ -0,0 +1,92 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+import QtTest
+import QtQuick
+import QtQuick.Window
+
+Rectangle {
+ id: container
+ width: 800
+ height: 640
+ color: "blue"
+
+ Component {
+ id: textInputComp
+ TextEdit {
+ anchors.fill: parent
+ visible: true
+ focus: true
+ color: "white"
+ }
+ }
+
+ TestCase {
+ id: testcase
+ name: "tst_inputpanelcontrols"
+ when: windowShown
+
+ property var inputPanel: null
+ property var textInput: null
+
+ function initTestCase() {
+ var inputPanelComp = Qt.createComponent("inputpanel/inputpanel.qml")
+ compare(inputPanelComp.status, Component.Ready, "Failed to create component: "+inputPanelComp.errorString())
+ inputPanel = inputPanelComp.createObject(container)
+
+ textInput = textEditComp.createObject(container)
+ }
+
+ function cleanupTestCase() {
+ if (inputPanel)
+ inputPanel.destroy()
+ }
+
+ function prepareTest() {
+ var window = container.Window.window
+ verify(window)
+ window.raise()
+ window.requestActivate()
+ tryCompare(window, "active", true)
+
+ container.forceActiveFocus()
+ waitForRendering(container)
+ textInput.forceActiveFocus()
+ waitForRendering(inputPanel)
+
+ textInput.text = ""
+ verify(inputPanel.visible === true)
+ verify(textInput.activeFocus === true)
+ }
+
+ Component {
+ id: textEditComp
+ TextEdit {
+ id: textEdit
+ visible: true
+ focus: true
+ color: "white"
+ }
+ }
+
+ function test_fullScreenModeBindingWorks() {
+ prepareTest()
+
+ verify(inputPanel.visible === true)
+ waitForRendering(inputPanel)
+
+ // VirtualKeyboardSettings.fullScreeenMode is initially true
+ // Verity that shadow input is visible and the content match with the edit field
+ verify(inputPanel.shadowInputVisible)
+ textInput.text = "hello"
+ compare(inputPanel.shadowInputText, textInput.text)
+
+ // Disable fullScreenMode and verify
+ inputPanel.fullScreenMode = false
+ waitForRendering(inputPanel)
+ verify(!inputPanel.shadowInputVisible)
+ textInput.text = "world"
+ compare(inputPanel.shadowInputText, "")
+ }
+ }
+}
diff --git a/tests/auto/shadowinput/tst_shadowinput.cpp b/tests/auto/shadowinput/tst_shadowinput.cpp
new file mode 100644
index 00000000..afa0bb28
--- /dev/null
+++ b/tests/auto/shadowinput/tst_shadowinput.cpp
@@ -0,0 +1,23 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include <QtQuickTest/quicktest.h>
+#include <QByteArray>
+#include <QStandardPaths>
+#include <QFileInfo>
+#include <QDir>
+
+namespace
+{
+
+struct VirtualKeyboardSetup : QObject
+{
+ VirtualKeyboardSetup()
+ {
+ qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));
+ }
+};
+
+}
+
+QUICK_TEST_MAIN_WITH_SETUP(shadowinput, VirtualKeyboardSetup)