diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp index a9899983c2e..e46d25bef19 100644 --- a/src/widgets/itemviews/qlistwidget.cpp +++ b/src/widgets/itemviews/qlistwidget.cpp @@ -650,11 +650,13 @@ QListWidgetItem::QListWidgetItem(const QString &text, QListWidget *listview, int |Qt::ItemIsEnabled |Qt::ItemIsDragEnabled) { + QListModel *model = listModel(); { QSignalBlocker b(view); + QSignalBlocker bm(model); setData(Qt::DisplayRole, text); } - if (QListModel *model = listModel()) + if (model) model->insert(model->rowCount(), this); } @@ -683,12 +685,14 @@ QListWidgetItem::QListWidgetItem(const QIcon &icon,const QString &text, |Qt::ItemIsEnabled |Qt::ItemIsDragEnabled) { + QListModel *model = listModel(); { QSignalBlocker b(view); + QSignalBlocker bm(model); setData(Qt::DisplayRole, text); setData(Qt::DecorationRole, icon); } - if (QListModel *model = listModel()) + if (model) model->insert(model->rowCount(), this); } diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp index 30afa69c317..91088aeeca4 100644 --- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp +++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp @@ -267,6 +267,7 @@ tst_QListWidget::tst_QListWidget(): testWidget(0), rcParent(8), rcFirst(8,0), rc void tst_QListWidget::initTestCase() { + qRegisterMetaType("QListWidgetItem*"); testWidget = new QListWidget(); testWidget->show(); @@ -663,6 +664,9 @@ void tst_QListWidget::insertItems() QFETCH(int, rowCount); QFETCH(int, insertType); + QSignalSpy itemChangedSpy(testWidget, &QListWidget::itemChanged); + QSignalSpy dataChangedSpy(testWidget->model(), &QAbstractItemModel::dataChanged); + if (insertType == 3) { QStringList strings; for (int i=0; icount(); ++i) QCOMPARE(testWidget->item(i)->listWidget(), testWidget); + + QCOMPARE(itemChangedSpy.count(), 0); + QCOMPARE(dataChangedSpy.count(), 0); } void tst_QListWidget::itemAssignment() @@ -1257,7 +1264,6 @@ void tst_QListWidget::setData() QFETCH(IntList, roles); QFETCH(QVariantList, values); QFETCH(int, expectedSignalCount); - qRegisterMetaType("QListWidgetItem*"); QCOMPARE(roles.count(), values.count()); @@ -1715,7 +1721,6 @@ void tst_QListWidget::task258949_keypressHangup() void tst_QListWidget::QTBUG8086_currentItemChangedOnClick() { - qRegisterMetaType("QListWidgetItem*"); QWidget win; QHBoxLayout layout(&win); QListWidget list; @@ -1837,7 +1842,6 @@ void tst_QListWidget::mimeData() void tst_QListWidget::QTBUG50891_ensureSelectionModelSignalConnectionsAreSet() { - qRegisterMetaType("QListWidgetItem*"); QListWidget list; for (int i = 0 ; i < 4; ++i) new QListWidgetItem(QString::number(i), &list);