summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp')
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp32
1 files changed, 29 insertions, 3 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 7b9d7d0a58..be7c58f20b 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -224,16 +224,29 @@ private slots:
void ctrlRubberbandSelection();
void QTBUG6407_extendedSelection();
void QTBUG6753_selectOnSelection();
+ void testDelegateDestroyEditor();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
{
public:
- MyAbstractItemDelegate() : QAbstractItemDelegate() {};
+ MyAbstractItemDelegate() : QAbstractItemDelegate() { calledVirtualDtor = false; }
void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const {}
QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const { return QSize(); }
- QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &,
- const QModelIndex &) const { return new QWidget(parent); }
+ QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &) const
+ {
+ openedEditor = new QWidget(parent);
+ return openedEditor;
+ }
+ void destroyEditor(QWidget *editor, const QModelIndex &index) const
+ {
+ calledVirtualDtor = true;
+ // QAbstractItemDelegate::destroyEditor(editor,index);
+ editor->deleteLater();
+ }
+
+ mutable bool calledVirtualDtor;
+ mutable QWidget *openedEditor;
};
// Testing get/set functions
@@ -1497,5 +1510,18 @@ void tst_QAbstractItemView::QTBUG6753_selectOnSelection()
QCOMPARE(table.selectedItems().first(), table.item(item.row(), item.column()));
}
+void tst_QAbstractItemView::testDelegateDestroyEditor()
+{
+ QTableWidget table(5, 5);
+ MyAbstractItemDelegate delegate;
+ table.setItemDelegate(&delegate);
+ table.edit(table.model()->index(1, 1));
+ TestView *tv = reinterpret_cast<TestView*>(&table);
+ QVERIFY(!delegate.calledVirtualDtor);
+ tv->tst_closeEditor(delegate.openedEditor, QAbstractItemDelegate::NoHint);
+ QVERIFY(delegate.calledVirtualDtor);
+}
+
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"