summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/itemviews
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2018-02-16 08:54:58 +0100
committerLiang Qi <liang.qi@qt.io>2018-02-16 08:54:58 +0100
commit942ab490724fcc9544e786e5783718e1a07aa50b (patch)
treefeb7d3ff716edb37b2ca60e33c05adf8777bd964 /tests/auto/widgets/itemviews
parent0fb8271a467202990c90321066e40faed640a7a8 (diff)
parent24adaa9a742e6f95ff897d0eb9a2bce0527dd042 (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')
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp79
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/qdirmodel.pro2
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp13
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)));