aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2018-03-12 13:07:12 +0100
committerJ-P Nurmi <jpnurmi@qt.io>2018-03-12 13:03:04 +0000
commit79964673d1587f9e6a254cb6a1f0dd0645b946e6 (patch)
treed10091d0461aea7ec61e353941bfd88a241ca901 /tests
parentec9aa9f12142de82315eb6d37f121311ec8408bc (diff)
ComboBox: fix key search in the popup
ComboBox does not change its current index, but highlighted index, when navigating in the popup. If the popup is accepted, the currently highlighted index is applied as the new current index. However, if the popup is rejected, the old current index is kept intact. This is why there is a separation between current and highlighted index. The newly added key search functionality (added together with ComboBox::editable) was missing a check whether the popup is visible. It was unconditionally changing the current index, which lead to a wrong behavior when the popup was open. Task-number: QTBUG-61348 Change-Id: Ic0295db609495ccefbccb7c425a817926786014e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/controls/data/tst_combobox.qml54
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml
index 5389a04a..30d6a93c 100644
--- a/tests/auto/controls/data/tst_combobox.qml
+++ b/tests/auto/controls/data/tst_combobox.qml
@@ -629,36 +629,90 @@ TestCase {
compare(control.currentIndex, 0)
compare(control.currentText, "Banana")
+ compare(control.highlightedIndex, -1)
keyPress(Qt.Key_C)
compare(control.currentIndex, 1)
compare(control.currentText, "Coco")
+ compare(control.highlightedIndex, -1)
// no match
keyPress(Qt.Key_N)
compare(control.currentIndex, 1)
compare(control.currentText, "Coco")
+ compare(control.highlightedIndex, -1)
keyPress(Qt.Key_C)
compare(control.currentIndex, 2)
compare(control.currentText, "Coconut")
+ compare(control.highlightedIndex, -1)
keyPress(Qt.Key_C)
compare(control.currentIndex, 4)
compare(control.currentText, "Cocomuffin")
+ compare(control.highlightedIndex, -1)
// wrap
keyPress(Qt.Key_C)
compare(control.currentIndex, 1)
compare(control.currentText, "Coco")
+ compare(control.highlightedIndex, -1)
keyPress(Qt.Key_A)
compare(control.currentIndex, 3)
compare(control.currentText, "Apple")
+ compare(control.highlightedIndex, -1)
keyPress(Qt.Key_B)
compare(control.currentIndex, 0)
compare(control.currentText, "Banana")
+ compare(control.highlightedIndex, -1)
+
+ // popup
+ control.popup.open()
+ tryCompare(control.popup, "opened", true)
+
+ compare(control.currentIndex, 0)
+ compare(control.highlightedIndex, 0)
+
+ keyClick(Qt.Key_C)
+ compare(control.highlightedIndex, 1) // "Coco"
+ compare(control.currentIndex, 0)
+
+ // no match
+ keyClick(Qt.Key_N)
+ compare(control.highlightedIndex, 1)
+ compare(control.currentIndex, 0)
+
+ keyClick(Qt.Key_C)
+ compare(control.highlightedIndex, 2) // "Coconut"
+ compare(control.currentIndex, 0)
+
+ keyClick(Qt.Key_C)
+ compare(control.highlightedIndex, 4) // "Cocomuffin"
+ compare(control.currentIndex, 0)
+
+ // wrap
+ keyClick(Qt.Key_C)
+ compare(control.highlightedIndex, 1) // "Coco"
+ compare(control.currentIndex, 0)
+
+ keyClick(Qt.Key_B)
+ compare(control.highlightedIndex, 0) // "Banana"
+ compare(control.currentIndex, 0)
+
+ keyClick(Qt.Key_A)
+ compare(control.highlightedIndex, 3) // "Apple"
+ compare(control.currentIndex, 0)
+
+ verify(control.popup.visible)
+
+ // accept
+ keyClick(Qt.Key_Return)
+ tryCompare(control.popup, "visible", false)
+ compare(control.currentIndex, 3)
+ compare(control.currentText, "Apple")
+ compare(control.highlightedIndex, -1)
}
function test_popup() {