diff options
author | Liang Qi <liang.qi@qt.io> | 2018-02-16 08:54:58 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2018-02-16 08:54:58 +0100 |
commit | 942ab490724fcc9544e786e5783718e1a07aa50b (patch) | |
tree | feb7d3ff716edb37b2ca60e33c05adf8777bd964 /tests/auto/widgets/itemviews | |
parent | 0fb8271a467202990c90321066e40faed640a7a8 (diff) | |
parent | 24adaa9a742e6f95ff897d0eb9a2bce0527dd042 (diff) |
Merge remote-tracking branch 'origin/5.11' into dev
Conflicts:
src/corelib/tools/tools.pri
Change-Id: I705630f9cecbf0ce51a22fc6116b8c49611259e9
Diffstat (limited to 'tests/auto/widgets/itemviews')
4 files changed, 91 insertions, 7 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp index e99ed8f2f4..4723221293 100644 --- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp +++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp @@ -149,6 +149,8 @@ private slots: void inputMethodEnabled(); void currentFollowsIndexWidget_data(); void currentFollowsIndexWidget(); + void checkFocusAfterActivationChanges_data(); + void checkFocusAfterActivationChanges(); }; class MyAbstractItemDelegate : public QAbstractItemDelegate @@ -2443,5 +2445,82 @@ void tst_QAbstractItemView::currentFollowsIndexWidget() QCOMPARE(view->currentIndex(), item1->index()); } +class EditorItemDelegate : public QItemDelegate +{ +public: + EditorItemDelegate() : QItemDelegate(), openedEditor(nullptr) { } + QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &, + const QModelIndex &) const override + { + openedEditor = new QLineEdit(parent); + return openedEditor; + } + mutable QPointer<QWidget> openedEditor; +}; + +// Testing the case reported in QTBUG-62253. +// When an itemview with an editor that has focus loses focus +// due to a change in the active window then we need to check +// that the itemview gets focus once the activation is back +// on the original window. +void tst_QAbstractItemView::checkFocusAfterActivationChanges_data() +{ + QTest::addColumn<QString>("viewType"); + + QTest::newRow("QListView") << "QListView"; + QTest::newRow("QTableView") << "QTableView"; + QTest::newRow("QTreeView") << "QTreeView"; +} + +void tst_QAbstractItemView::checkFocusAfterActivationChanges() +{ + QFETCH(QString, viewType); + + const QRect availableGeo = qApp->primaryScreen()->availableGeometry(); + const int halfWidth = availableGeo.width() / 2; + QWidget otherTopLevel; + otherTopLevel.setGeometry(availableGeo.x(), availableGeo.y(), + halfWidth, availableGeo.height()); + otherTopLevel.show(); + + QWidget w; + w.setGeometry(availableGeo.x() + halfWidth, availableGeo.y(), + halfWidth, availableGeo.height()); + QLineEdit *le = new QLineEdit(&w); + QAbstractItemView *view = 0; + if (viewType == "QListView") + view = new QListView(&w); + else if (viewType == "QTableView") + view = new QTableView(&w); + else if (viewType == "QTreeView") + view = new QTreeView(&w); + + QStandardItemModel model(5, 5); + view->setModel(&model); + view->move(0, 50); + EditorItemDelegate delegate; + view->setItemDelegate(&delegate); + w.show(); + + QTest::qWaitForWindowActive(&w); + QVERIFY(le->hasFocus()); + + view->setFocus(); + QVERIFY(view->hasFocus()); + + view->edit(model.index(0,0)); + QVERIFY(QTest::qWaitForWindowExposed(delegate.openedEditor)); + QVERIFY(delegate.openedEditor->hasFocus()); + + QApplication::setActiveWindow(&otherTopLevel); + QTest::qWaitForWindowActive(&otherTopLevel); + otherTopLevel.setFocus(); + QVERIFY(!delegate.openedEditor); + + QApplication::setActiveWindow(&w); + QTest::qWaitForWindowActive(&w); + QVERIFY(view->hasFocus()); +} + QTEST_MAIN(tst_QAbstractItemView) #include "tst_qabstractitemview.moc" diff --git a/tests/auto/widgets/itemviews/qdirmodel/qdirmodel.pro b/tests/auto/widgets/itemviews/qdirmodel/qdirmodel.pro index 3527b424c1..0429315d95 100644 --- a/tests/auto/widgets/itemviews/qdirmodel/qdirmodel.pro +++ b/tests/auto/widgets/itemviews/qdirmodel/qdirmodel.pro @@ -12,7 +12,7 @@ android { DEFINES += SRCDIR=\\\"$$PWD/\\\" } -android { +android:!android-embedded { RESOURCES += \ testdata.qrc } diff --git a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp index 2044704e76..48d39bbb11 100644 --- a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp +++ b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp @@ -112,7 +112,7 @@ void tst_QDirModel::getSetCheck() void tst_QDirModel::initTestCase() { -#if defined(Q_OS_ANDROID) +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) QString dataPath = SRCDIR; QString resourceSourcePath = QStringLiteral(":/android_testdata"); QDirIterator it(resourceSourcePath, QDirIterator::Subdirectories); @@ -614,7 +614,7 @@ void tst_QDirModel::task196768_sorting() view.setSortingEnabled(true); index2 = model.index(path); -#if defined(Q_OS_ANDROID) +#if defined(Q_OS_ANDROID) && !defined(Q_OS_ANDROID_EMBEDDED) QEXPECT_FAIL("", "QTBUG-43818", Continue); #else if (EmulationDetector::isRunningArmOnX86()) diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp index a5d131a436..3594e7fa01 100644 --- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp +++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp @@ -2262,10 +2262,6 @@ void tst_QHeaderView::QTBUG6058_reset() void tst_QHeaderView::QTBUG7833_sectionClicked() { - - - - QTableView tv; QStandardItemModel *sim = new QStandardItemModel(&tv); QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(&tv); @@ -2289,11 +2285,20 @@ void tst_QHeaderView::QTBUG7833_sectionClicked() tv.horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); tv.setModel(proxyModel); + const int section4Size = tv.horizontalHeader()->sectionSize(4) + 1; + tv.horizontalHeader()->resizeSection(4, section4Size); tv.setColumnHidden(5, true); tv.setColumnHidden(6, true); tv.horizontalHeader()->swapSections(8, 10); tv.sortByColumn(1, Qt::AscendingOrder); + QCOMPARE(tv.isColumnHidden(5), true); + QCOMPARE(tv.isColumnHidden(6), true); + QCOMPARE(tv.horizontalHeader()->sectionsMoved(), true); + QCOMPARE(tv.horizontalHeader()->logicalIndex(8), 10); + QCOMPARE(tv.horizontalHeader()->logicalIndex(10), 8); + QCOMPARE(tv.horizontalHeader()->sectionSize(4), section4Size); + QSignalSpy clickedSpy(tv.horizontalHeader(), SIGNAL(sectionClicked(int))); QSignalSpy pressedSpy(tv.horizontalHeader(), SIGNAL(sectionPressed(int))); |