Ensure that we return an invalid QTableWidgetItem when none is available.
authorStephen Kelly <stephen.kelly@kdab.com>
Mon, 6 Aug 2012 16:36:44 +0000 (18:36 +0200)
committerQt by Nokia <qt-info@nokia.com>
Tue, 7 Aug 2012 14:40:07 +0000 (16:40 +0200)
Task-number: QTBUG-26195

Change-Id: Iede4f51770bd8c8eab3558137aaf7b1721f25a87
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
src/widgets/itemviews/qtablewidget.cpp
tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp

index d9d377a..c36ec3d 100644 (file)
@@ -234,7 +234,7 @@ QTableWidgetItem *QTableModel::takeItem(int row, int column)
 
 QTableWidgetItem *QTableModel::item(int row, int column) const
 {
-    return tableItems.value(tableIndex(row, column));
+    return item(index(row, column));
 }
 
 QTableWidgetItem *QTableModel::item(const QModelIndex &index) const
index fe1d15a..cd6bc08 100644 (file)
@@ -100,6 +100,7 @@ private slots:
     void task231094();
     void task219380_removeLastRow();
     void task262056_sortDuplicate();
+    void itemWithHeaderItems();
 
 private:
     QTableWidget *testWidget;
@@ -1492,6 +1493,21 @@ void tst_QTableWidget::task262056_sortDuplicate()
 
 }
 
+void tst_QTableWidget::itemWithHeaderItems()
+{
+    // Need a separate testcase for this because the tst_QTableWidget::item testcase
+    // does creates QTableWidgetItems for each available cell in the table. We're testing
+    // the case of not all available cells having a QTableWidgetItem set.
+    QTableWidget table(2, 1);
+
+    QTableWidgetItem *item0_0 = new QTableWidgetItem(QTableWidgetItem::UserType);
+    table.setItem(0, 0, item0_0);
+
+    QTableWidgetItem *item1_0 = new QTableWidgetItem(QTableWidgetItem::UserType);
+    table.setItem(1, 0, item1_0);
+
+    QCOMPARE(table.item(0, 1), static_cast<QTableWidgetItem *>(0));
+}
 
 QTEST_MAIN(tst_QTableWidget)
 #include "tst_qtablewidget.moc"