Remove workaround for QComboBox not having a USER property.
QComboBox does in fact have a user property since b1b87a73012342dc1619a8e907ea9954d59ca564. Change-Id: I24eb2ef267cec5d8a9f7348954b703fa6df04fa5 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: David Faure <faure@kde.org>
This commit is contained in:
parent
c3e1abad4e
commit
dc6a1d186e
@ -551,13 +551,9 @@ void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) con
|
||||
Q_UNUSED(editor);
|
||||
Q_UNUSED(index);
|
||||
#else
|
||||
Q_D(const QItemDelegate);
|
||||
QVariant v = index.data(Qt::EditRole);
|
||||
QByteArray n = editor->metaObject()->userProperty().name();
|
||||
|
||||
// ### Qt 5: give QComboBox a USER property
|
||||
if (n.isEmpty() && editor->inherits("QComboBox"))
|
||||
n = d->editorFactory()->valuePropertyName(v.userType());
|
||||
if (!n.isEmpty()) {
|
||||
if (!v.isValid())
|
||||
v = QVariant(editor->property(n).userType(), (const void *)0);
|
||||
|
@ -488,13 +488,9 @@ void QStyledItemDelegate::setEditorData(QWidget *editor, const QModelIndex &inde
|
||||
Q_UNUSED(editor);
|
||||
Q_UNUSED(index);
|
||||
#else
|
||||
Q_D(const QStyledItemDelegate);
|
||||
QVariant v = index.data(Qt::EditRole);
|
||||
QByteArray n = editor->metaObject()->userProperty().name();
|
||||
|
||||
// ### Qt 5: give QComboBox a USER property
|
||||
if (n.isEmpty() && editor->inherits("QComboBox"))
|
||||
n = d->editorFactory()->valuePropertyName(v.userType());
|
||||
if (!n.isEmpty()) {
|
||||
if (!v.isValid())
|
||||
v = QVariant(editor->property(n).userType(), (const void *)0);
|
||||
|
@ -58,6 +58,7 @@
|
||||
#include <qtreewidget.h>
|
||||
|
||||
#include <QItemDelegate>
|
||||
#include <QComboBox>
|
||||
#include <QAbstractItemDelegate>
|
||||
#include <QTextEdit>
|
||||
#include <QPlainTextEdit>
|
||||
@ -228,6 +229,7 @@ private slots:
|
||||
void editorEvent();
|
||||
void enterKey_data();
|
||||
void enterKey();
|
||||
void comboBox();
|
||||
|
||||
void task257859_finalizeEdit();
|
||||
void QTBUG4435_keepSelectionOnCheck();
|
||||
@ -1205,6 +1207,35 @@ void tst_QItemDelegate::QTBUG4435_keepSelectionOnCheck()
|
||||
QCOMPARE(model.item(0)->checkState(), Qt::Checked);
|
||||
}
|
||||
|
||||
void tst_QItemDelegate::comboBox()
|
||||
{
|
||||
QTableWidgetItem *item1 = new QTableWidgetItem;
|
||||
item1->setData(Qt::DisplayRole, true);
|
||||
|
||||
QTableWidget widget(1, 1);
|
||||
widget.setItem(0, 0, item1);
|
||||
widget.show();
|
||||
|
||||
widget.editItem(item1);
|
||||
|
||||
QTestEventLoop::instance().enterLoop(1);
|
||||
|
||||
QComboBox *boolEditor = qFindChild<QComboBox*>(widget.viewport());
|
||||
QVERIFY(boolEditor);
|
||||
QCOMPARE(boolEditor->currentIndex(), 1); // True is selected initially.
|
||||
// The data must actually be different in order for the model
|
||||
// to be updated.
|
||||
boolEditor->setCurrentIndex(0);
|
||||
QCOMPARE(boolEditor->currentIndex(), 0); // Changed to false.
|
||||
|
||||
widget.clearFocus();
|
||||
widget.setFocus();
|
||||
|
||||
QVariant data = item1->data(Qt::EditRole);
|
||||
QCOMPARE(data.userType(), (int)QMetaType::Bool);
|
||||
QCOMPARE(data.toBool(), false);
|
||||
}
|
||||
|
||||
|
||||
// ### _not_ covered:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user