diff options
Diffstat (limited to 'tests/auto/shadowinput')
-rw-r--r-- | tests/auto/shadowinput/CMakeLists.txt | 17 | ||||
-rw-r--r-- | tests/auto/shadowinput/data/inputpanel/inputpanel.qml | 24 | ||||
-rw-r--r-- | tests/auto/shadowinput/data/tst_shadowinput.qml | 92 | ||||
-rw-r--r-- | tests/auto/shadowinput/tst_shadowinput.cpp | 23 |
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) |