summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-10-11 07:40:32 +0200
committerLiang Qi <liang.qi@qt.io>2016-10-11 07:40:32 +0200
commit905329200f2f3f9372bf07a001371c30c0663684 (patch)
treee6f072ea693c377ae306b3960f4bde36ee20bc17 /tests/auto/widgets
parent91cde062968f97041bca8d2a30d13aa03b606c3d (diff)
parent1a78ef09b93b0a7337075555dc91032f39fab2a9 (diff)
Merge remote-tracking branch 'origin/5.7' into 5.8
Conflicts: src/gui/image/qpixmap.cpp src/widgets/kernel/qformlayout.cpp Change-Id: I8a8391a202adf7f18464a22ddf0a6c4974eab692
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp52
-rw-r--r--tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp3
-rw-r--r--tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp3
3 files changed, 56 insertions, 2 deletions
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 7412637354..30c1b9c44b 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -148,6 +148,7 @@ private slots:
void QTBUG50102_SH_ItemView_ScrollMode();
void QTBUG50535_update_on_new_selection_model();
void testSelectionModelInSyncWithView();
+ void testClickToSelect();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
@@ -2102,5 +2103,56 @@ void tst_QAbstractItemView::testSelectionModelInSyncWithView()
QCOMPARE(view.selectionModel()->selection().indexes(), QModelIndexList() << model.index(0, 0));
}
+class SetSelectionTestView : public QListView
+{
+ Q_OBJECT
+public:
+ SetSelectionTestView() : QListView() {}
+
+signals:
+ void setSelectionCalled(const QRect &rect);
+
+protected:
+ void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) Q_DECL_OVERRIDE
+ {
+ emit setSelectionCalled(rect);
+ QListView::setSelection(rect, flags);
+ }
+};
+
+void tst_QAbstractItemView::testClickToSelect()
+{
+ // This test verifies that the QRect that is passed from QAbstractItemView::mousePressEvent
+ // to the virtual method QAbstractItemView::setSelection(const QRect &, SelectionFlags)
+ // is the 1x1 rect which conains exactly the clicked pixel if no modifiers are pressed.
+
+ QStringList list;
+ list << "A" << "B" << "C";
+ QStringListModel model(list);
+
+ SetSelectionTestView view;
+ view.setModel(&model);
+ view.show();
+ QTest::qWaitForWindowExposed(&view);
+
+ QSignalSpy spy(&view, &SetSelectionTestView::setSelectionCalled);
+
+ const QModelIndex indexA(model.index(0, 0));
+ const QRect visualRectA = view.visualRect(indexA);
+ const QPoint centerA = visualRectA.center();
+
+ // Click the center of the visualRect of item "A"
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, centerA);
+ QCOMPARE(spy.count(), 1);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(centerA, QSize(1, 1)));
+
+ // Click a point slightly away from the center
+ const QPoint nearCenterA = centerA + QPoint(1, 1);
+ QVERIFY(visualRectA.contains(nearCenterA));
+ QTest::mouseClick(view.viewport(), Qt::LeftButton, Qt::NoModifier, nearCenterA);
+ QCOMPARE(spy.count(), 2);
+ QCOMPARE(spy.back().front().value<QRect>(), QRect(nearCenterA, QSize(1, 1)));
+}
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"
diff --git a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
index 55b0ed4279..62c75cadf3 100644
--- a/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/widgets/kernel/qshortcut/tst_qshortcut.cpp
@@ -1207,7 +1207,8 @@ QShortcut *tst_QShortcut::setupShortcut(QWidget *parent, const char *name, int t
void tst_QShortcut::shortcutDestroyed(QObject* obj)
{
- shortcuts.removeAll(static_cast<QShortcut *>(obj));
+ shortcuts.erase(std::remove(shortcuts.begin(), shortcuts.end(), obj),
+ shortcuts.end());
}
void tst_QShortcut::sendKeyEvents(int k1, QChar c1, int k2, QChar c2, int k3, QChar c3, int k4, QChar c4)
diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
index 7b5ec4fa4c..2df5f01627 100644
--- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
+++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
@@ -163,7 +163,8 @@ private:
void tst_QStackedWidget::dynamicPages()
{
- QStackedWidget *sw = new QStackedWidget;
+ QStackedWidget stackedWidget;
+ QStackedWidget *sw = &stackedWidget;
TestPage *w1 = new TestPage(true);
w1->setN(3);