diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com> | 2014-10-21 10:01:58 +0200 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com> | 2014-10-24 08:51:18 +0200 |
commit | c4430ed02301c456dd591c88049ee22bc7dd9725 (patch) | |
tree | 2f82ced8c4a2c233ce5661c1cd1f07200cb5851a /tests/auto/widgets | |
parent | 29d3b9745b4ba57cd79c95a96659f97c85c3b4ee (diff) |
Correctly update QComboBox appearance on editable change
The updateDelegate() function checks isEditable() which in
turn checks if d->lineEdit != 0, so we need to make the
call after the lineEdit has actually been set/unset, otherwise
the change to the delegate will not come until the next time
you update the delegate.
[ChangeLog][QComboBox] Fixed updating appearance of popup menu
when changing the editable state of the combo box.
Change-Id: Ib32f36cabd53c2c30d6256484a1eae131419960a
Task-number: QTBUG-33537
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r-- | tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp index f6928f0b35..ac32ee4968 100644 --- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp +++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp @@ -160,6 +160,7 @@ private slots: void task_QTBUG_31146_popupCompletion(); void keyboardSelection(); void setCustomModelAndView(); + void updateDelegateOnEditableChange(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -3049,5 +3050,32 @@ void tst_QComboBox::keyboardSelection() QCOMPARE(comboBox.currentText(), list.at(1)); } +void tst_QComboBox::updateDelegateOnEditableChange() +{ + + QComboBox box; + box.addItem(QStringLiteral("Foo")); + box.addItem(QStringLiteral("Bar")); + box.setEditable(false); + + QComboBoxPrivate *d = static_cast<QComboBoxPrivate *>(QComboBoxPrivate::get(&box)); + + { + bool menuDelegateBefore = qobject_cast<QComboMenuDelegate *>(box.itemDelegate()) != 0; + d->updateDelegate(); + bool menuDelegateAfter = qobject_cast<QComboMenuDelegate *>(box.itemDelegate()) != 0; + QCOMPARE(menuDelegateAfter, menuDelegateBefore); + } + + box.setEditable(true); + + { + bool menuDelegateBefore = qobject_cast<QComboMenuDelegate *>(box.itemDelegate()) != 0; + d->updateDelegate(); + bool menuDelegateAfter = qobject_cast<QComboMenuDelegate *>(box.itemDelegate()) != 0; + QCOMPARE(menuDelegateAfter, menuDelegateBefore); + } +} + QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" |