diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-23 14:32:12 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-23 20:45:58 +0000 |
commit | 8cd268e994576a853bf430a6f60b94aa2767c20e (patch) | |
tree | 6b5770785ef5bd27dbe1e23ecb7c25625ad7791a | |
parent | f38e35dcd46bd4ac0c9859ec4f974702f6c8ad03 (diff) |
ComboBox: fix displayText initialization
Make ComboBox::textAt(idx) call ObjectModel::object(idx)
to force initialization of the model items.
Change-Id: If99c9263fa00ae6d21a92f11a45caf6e1f6b731c
Task-number: QTBUG-50143
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
-rw-r--r-- | src/templates/qquickcombobox.cpp | 2 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_combobox.qml | 31 |
2 files changed, 32 insertions, 1 deletions
diff --git a/src/templates/qquickcombobox.cpp b/src/templates/qquickcombobox.cpp index 4465d5dc..a2c0bf89 100644 --- a/src/templates/qquickcombobox.cpp +++ b/src/templates/qquickcombobox.cpp @@ -595,7 +595,7 @@ void QQuickComboBox::setPopup(QQuickPopup *popup) QString QQuickComboBox::textAt(int index) const { Q_D(const QQuickComboBox); - if (!d->delegateModel || index < 0 || index >= d->delegateModel->count()) + if (!d->delegateModel || index < 0 || index >= d->delegateModel->count() || !d->delegateModel->object(index)) return QString(); return d->delegateModel->stringValue(index, d->textRole.isEmpty() ? QStringLiteral("modelData") : d->textRole); } diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml index 2da0cc64..11390bb8 100644 --- a/tests/auto/controls/data/tst_combobox.qml +++ b/tests/auto/controls/data/tst_combobox.qml @@ -550,4 +550,35 @@ TestCase { compare(control.baselineOffset, control.contentItem.y + control.contentItem.baselineOffset) control.destroy() } + + Component { + id: displayBox + ComboBox { + textRole: "key" + model: ListModel { + ListElement { key: "First"; value: 123 } + ListElement { key: "Second"; value: 456 } + ListElement { key: "Third"; value: 789 } + } + } + } + + function test_displayText() { + var control = displayBox.createObject(testCase) + verify(control) + + compare(control.displayText, "First") + control.currentIndex = 1 + compare(control.displayText, "Second") + control.textRole = "value" + compare(control.displayText, "456") + control.displayText = "Display" + compare(control.displayText, "Display") + control.currentIndex = 2 + compare(control.displayText, "Display") + control.displayText = undefined + compare(control.displayText, "789") + + control.destroy() + } } |