diff options
-rw-r--r-- | src/quicktemplates2/qquickstackview_p.cpp | 2 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_stackview.qml | 31 |
2 files changed, 23 insertions, 10 deletions
diff --git a/src/quicktemplates2/qquickstackview_p.cpp b/src/quicktemplates2/qquickstackview_p.cpp index 0167ad97..606d259a 100644 --- a/src/quicktemplates2/qquickstackview_p.cpp +++ b/src/quicktemplates2/qquickstackview_p.cpp @@ -73,6 +73,8 @@ void QQuickStackViewPrivate::setCurrentItem(QQuickStackElement *element) currentItem = item; if (element) element->setVisible(true); + if (item) + item->setFocus(true); emit q->currentItemChanged(); } diff --git a/tests/auto/controls/data/tst_stackview.qml b/tests/auto/controls/data/tst_stackview.qml index 6f6497c5..3c0f0273 100644 --- a/tests/auto/controls/data/tst_stackview.qml +++ b/tests/auto/controls/data/tst_stackview.qml @@ -61,7 +61,7 @@ TestCase { name: "StackView" Item { id: item } - TextField { id: textField } + Component { id: textField; TextField { } } Component { id: component; Item { } } Component { @@ -323,22 +323,33 @@ TestCase { compare(item.height, control.height) } - function test_focus() { + function test_focus_data() { + return [ + { tag: "true", focus: true, forceActiveFocus: false }, + { tag: "false", focus: false, forceActiveFocus: false }, + { tag: "forceActiveFocus()", focus: false, forceActiveFocus: true }, + ] + } + + function test_focus(data) { var control = createTemporaryObject(stackView, testCase, {initialItem: item, width: 200, height: 200}) verify(control) - control.forceActiveFocus() - verify(control.activeFocus) + if (data.focus) + control.focus = true + if (data.forceActiveFocus) + control.forceActiveFocus() + compare(control.activeFocus, data.focus || data.forceActiveFocus) - control.push(textField, StackView.Immediate) - compare(control.currentItem, textField) - textField.forceActiveFocus() - verify(textField.activeFocus) + var page = control.push(textField, StackView.Immediate) + verify(page) + compare(control.currentItem, page) + compare(page.activeFocus, control.activeFocus) control.pop(StackView.Immediate) compare(control.currentItem, item) - verify(control.activeFocus) - verify(!textField.activeFocus) + compare(item.activeFocus, data.focus || data.forceActiveFocus) + verify(!page.activeFocus) } function test_find() { |