summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorChunLin Wang <wangchunlin@uniontech.com>2021-08-17 20:07:31 +0800
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2021-08-20 13:31:45 +0000
commit9ba4c6beeff394d8526503b43ba471d82c27df9c (patch)
tree88b7a8cd051c745731301a5b66bd3c0a1efc714c /tests/auto/widgets
parentb7150d22c8ea6349b5d1fd61d5059e0fbe2745ed (diff)
Fix QScroller::scrollTo failing in QGraphicsView with movable item
When forcing software scrolling through QScroller::scrollTo, it will start from (0, 0). QGraphicsViewPrivate::canStartScrollingAt should consider the locationof points, not just the flags of item. Fixes: QTBUG-70255 Pick-to: 5.15 6.1 6.2 Change-Id: Iebdd5568baa3bdb41c705204dadb2895cfe9c0e2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 500b8e3c4b..bb6af30c22 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -50,6 +50,7 @@
#include <QtWidgets/QBoxLayout>
#include <QtWidgets/QStyle>
#include <QtWidgets/QPushButton>
+#include <QtWidgets/QScroller>
#if QT_CONFIG(opengl)
#include <QtOpenGLWidgets/QOpenGLWidget>
#endif
@@ -266,6 +267,7 @@ private slots:
void QTBUG_5859_exposedRect();
void hoverLeave();
void QTBUG_16063_microFocusRect();
+ void QTBUG_70255_scrollTo();
#ifndef QT_NO_CURSOR
void QTBUG_7438_cursor();
#endif
@@ -5020,5 +5022,33 @@ void tst_QGraphicsView::QTBUG_16063_microFocusRect()
QCOMPARE(mfv, IMItem::mf.translated(-view.mapToScene(view.sceneRect().toRect()).boundingRect().topLeft()));
}
+void tst_QGraphicsView::QTBUG_70255_scrollTo()
+{
+ QGraphicsView view;
+ QGraphicsScene scene;
+ view.setFixedSize(200, 200);
+ scene.setSceneRect(0, 0, 1000, 1000);
+ QGraphicsRectItem item;
+ item.setRect(-20, -20, 40, 40);
+ item.setFlag(QGraphicsItem::ItemIsMovable, true);
+ scene.addItem(&item);
+ view.setScene(&scene);
+ view.centerOn(0, 0);
+
+ view.show();
+ QApplication::setActiveWindow(&view);
+ if (!QTest::qWaitForWindowExposed(&view) || !QTest::qWaitForWindowActive(&view))
+ QSKIP("Failed to show and activate window");
+
+ QPoint point = view.mapFromScene(0, 0);
+ QCOMPARE(point, QPoint(0, 0));
+
+ QScroller::scroller(&view)->scrollTo(QPointF(0, 500), 100);
+ QTest::qWait(200);
+
+ point = view.mapFromScene(0, 0);
+ QCOMPARE(point, QPoint(0, -500));
+}
+
QTEST_MAIN(tst_QGraphicsView)
#include "tst_qgraphicsview.moc"