summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2014-10-21 10:01:58 +0200
committerEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2014-10-24 08:51:18 +0200
commitc4430ed02301c456dd591c88049ee22bc7dd9725 (patch)
tree2f82ced8c4a2c233ce5661c1cd1f07200cb5851a /tests/auto/widgets
parent29d3b9745b4ba57cd79c95a96659f97c85c3b4ee (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.cpp28
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"