diff options
author | Iikka Eklund <iikka.eklund@digia.com> | 2014-04-01 11:44:26 +0300 |
---|---|---|
committer | Iikka Eklund <iikka.eklund@digia.com> | 2014-04-01 11:44:27 +0300 |
commit | 0ab63b035a649dc1982c867cd37d466d249004b9 (patch) | |
tree | 6de22edcd3957aae3eee698136a000e52ab7f8fe /tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp | |
parent | a6f8aa0ae1d5a1d1099df1891ea60b14b6eb6065 (diff) | |
parent | 0cb2c760c219514849ab0f6be8e5368f92dfa5d9 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Change-Id: I2a6eb9dd7724931bc89f28bcc156e77c4e26d069
Diffstat (limited to 'tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp')
-rw-r--r-- | tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp index c3aaf6be16..1005bf6b3c 100644 --- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp @@ -60,6 +60,7 @@ #include <qlineedit.h> #include <qscreen.h> #include <qscopedpointer.h> +#include <qstyleditemdelegate.h> static inline void setFrameless(QWidget *w) { @@ -244,6 +245,9 @@ private slots: void testChangeEditorState(); void deselectInSingleSelection(); void testNoActivateOnDisabledItem(); + void testFocusPolicy_data(); + void testFocusPolicy(); + void QTBUG31411_noSelection(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -1728,5 +1732,97 @@ void tst_QAbstractItemView::testNoActivateOnDisabledItem() QCOMPARE(activatedSpy.count(), 0); } +void tst_QAbstractItemView::testFocusPolicy_data() +{ + QTest::addColumn<QAbstractItemDelegate*>("delegate"); + + QAbstractItemDelegate *styledItemDelegate = new QStyledItemDelegate(this); + QAbstractItemDelegate *itemDelegate = new QItemDelegate(this); + + QTest::newRow("QStyledItemDelegate") << styledItemDelegate; + QTest::newRow("QItemDelegate") << itemDelegate; +} + +void tst_QAbstractItemView::testFocusPolicy() +{ + QFETCH(QAbstractItemDelegate*, delegate); + + QWidget window; + QTableView *table = new QTableView(&window); + table->setItemDelegate(delegate); + QVBoxLayout *layout = new QVBoxLayout(&window); + layout->addWidget(table); + + QStandardItemModel model; + model.setRowCount(10); + model.setColumnCount(10); + table->setModel(&model); + table->setCurrentIndex(model.index(1, 1)); + + centerOnScreen(&window); + moveCursorAway(&window); + + window.show(); + QApplication::setActiveWindow(&window); + QVERIFY(QTest::qWaitForWindowActive(&window)); + + // itemview accepts focus => editor is closed => return focus to the itemview + QPoint clickpos = table->visualRect(model.index(1, 1)).center(); + QTest::mouseDClick(table->viewport(), Qt::LeftButton, Qt::NoModifier, clickpos); + QWidget *editor = qApp->focusWidget(); + QVERIFY(editor); + QTest::keyClick(editor, Qt::Key_Escape, Qt::NoModifier); + QCOMPARE(qApp->focusWidget(), table); + + // itemview doesn't accept focus => editor is closed => clear the focus + table->setFocusPolicy(Qt::NoFocus); + QTest::mouseDClick(table->viewport(), Qt::LeftButton, Qt::NoModifier, clickpos); + editor = qApp->focusWidget(); + QVERIFY(editor); + QTest::keyClick(editor, Qt::Key_Escape, Qt::NoModifier); + QVERIFY(!qApp->focusWidget()); +} + +Q_DECLARE_METATYPE(QItemSelection) +void tst_QAbstractItemView::QTBUG31411_noSelection() +{ + QWidget window; + QTableView *table = new QTableView(&window); + table->setSelectionMode(QAbstractItemView::NoSelection); + QVBoxLayout *layout = new QVBoxLayout(&window); + layout->addWidget(table); + + QStandardItemModel model; + model.setRowCount(10); + model.setColumnCount(10); + table->setModel(&model); + table->setCurrentIndex(model.index(1, 1)); + + centerOnScreen(&window); + moveCursorAway(&window); + + window.show(); + QApplication::setActiveWindow(&window); + QVERIFY(QTest::qWaitForWindowActive(&window)); + + qRegisterMetaType<QItemSelection>(); + QSignalSpy selectionChangeSpy(table->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection))); + QVERIFY(selectionChangeSpy.isValid()); + + QPoint clickpos = table->visualRect(model.index(1, 1)).center(); + QTest::mouseClick(table->viewport(), Qt::LeftButton, Qt::NoModifier, clickpos); + QTest::mouseDClick(table->viewport(), Qt::LeftButton, Qt::NoModifier, clickpos); + + QPointer<QWidget> editor1 = qApp->focusWidget(); + QVERIFY(editor1); + QTest::keyClick(editor1, Qt::Key_Tab, Qt::NoModifier); + + QPointer<QWidget> editor2 = qApp->focusWidget(); + QVERIFY(editor2); + QTest::keyClick(editor2, Qt::Key_Escape, Qt::NoModifier); + + QCOMPARE(selectionChangeSpy.count(), 0); +} + QTEST_MAIN(tst_QAbstractItemView) #include "tst_qabstractitemview.moc" |