Warning, /frameworks/kirigami/autotests/tst_scrollablepage.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2023 Fushan Wen <qydwhotmail@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.1-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Layouts 0009 import QtQuick.Controls as QQC 0010 import QtTest 0011 import org.kde.kirigami as Kirigami 0012 0013 TestCase { 0014 id: testCase 0015 0016 width: 400 0017 height: 400 0018 name: "ScrollablePageTest" 0019 visible: false 0020 0021 SignalSpy { 0022 id: currentItemChangedSpy 0023 target: mainWindow.pageStack 0024 signalName: "currentItemChanged" 0025 } 0026 0027 // Simulate KCM.ScrollViewKCM 0028 Kirigami.ApplicationWindow { 0029 id: mainWindow 0030 width: 480 0031 height: 360 0032 pageStack.initialPage: Kirigami.Page { 0033 id: root 0034 function clickFirst() { 0035 userList.itemAtIndex(0).clicked(); 0036 } 0037 property alias view: scroll.view 0038 view: ListView { 0039 id: userList 0040 model: 1 0041 delegate: QQC.ItemDelegate { 0042 id: delegate 0043 width: ListView.view.width 0044 text: String(index) 0045 onClicked: { 0046 mainWindow.pageStack.pop(); 0047 mainWindow.pageStack.push(subPageComponent); 0048 console.log("clicked") 0049 } 0050 } 0051 } 0052 QQC.ScrollView { 0053 id: scroll 0054 anchors.fill: parent 0055 property Flickable view 0056 activeFocusOnTab: false 0057 contentItem: view 0058 onViewChanged: { 0059 view.parent = scroll; 0060 } 0061 Kirigami.Theme.colorSet: Kirigami.Theme.View 0062 Kirigami.Theme.inherit: false 0063 } 0064 } 0065 } 0066 0067 Component { 0068 id: subPageComponent 0069 Kirigami.ScrollablePage { 0070 readonly property alias success: realNametextField.activeFocus 0071 focus: true 0072 ColumnLayout { 0073 QQC.TextField { 0074 id: realNametextField 0075 focus: true 0076 text: "This item should be focused by default" 0077 } 0078 QQC.TextField { 0079 id: userNameField 0080 text: "ddeeff" 0081 } 0082 } 0083 } 0084 } 0085 0086 function initTestCase() { 0087 mainWindow.show() 0088 mainWindow.requestActivate(); 0089 tryVerify(() => mainWindow.active); 0090 } 0091 0092 function cleanupTestCase() { 0093 mainWindow.close() 0094 } 0095 0096 function test_defaultFocusInScrollablePage() { 0097 mainWindow.pageStack.currentItem.clickFirst(); 0098 if (!(mainWindow.pageStack.currentItem instanceof Kirigami.ScrollablePage)) { 0099 currentItemChangedSpy.wait() 0100 } 0101 verify(mainWindow.pageStack.currentItem instanceof Kirigami.ScrollablePage) 0102 // Consolidate the workaround for QTBUG-44043 0103 // https://invent.kde.org/frameworks/kirigami/-/commit/fd253ea5d9fa3f33411e54a596c021f51b5a102a 0104 tryVerify(() => mainWindow.pageStack.currentItem.success) 0105 } 0106 } 0107 0108 0109