summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/graphicsview
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-05-23 21:27:07 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-05-23 21:27:07 +0200
commitd3a8bc803cd7c4ce106038bfc4b37cdd6bb8e177 (patch)
tree3b6db0d4869f334d0eb4559c5ae457995cbe913e /tests/auto/widgets/graphicsview
parentd934ddc297f6db94dbc548fe01da64350f13577d (diff)
parent47a7628023610904c6ac52e23fa289f75f349b4e (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: src/corelib/io/qdatastream.cpp src/corelib/io/qdatastream.h src/corelib/json/qjsonwriter.cpp src/plugins/platforms/cocoa/qcocoawindow.mm src/plugins/platforms/xcb/qxcbkeyboard.cpp Change-Id: I46fef1455f5a9f2ce1ec394a3c65881093c51b62
Diffstat (limited to 'tests/auto/widgets/graphicsview')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp28
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp2
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp47
4 files changed, 61 insertions, 17 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 37190c3cf2..3e24257736 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -470,6 +470,7 @@ private slots:
void QTBUG_13473_sceneposchange();
void QTBUG_16374_crashInDestructor();
void QTBUG_20699_focusScopeCrash();
+ void QTBUG_30990_rightClickSelection();
private:
QList<QGraphicsItem *> paintedItems;
@@ -11468,5 +11469,32 @@ void tst_QGraphicsItem::QTBUG_20699_focusScopeCrash()
fs.setFocus();
}
+void tst_QGraphicsItem::QTBUG_30990_rightClickSelection()
+{
+ QGraphicsScene scene;
+ QGraphicsItem *item1 = scene.addRect(10, 10, 10, 10);
+ item1->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
+ QGraphicsItem *item2 = scene.addRect(100, 100, 10, 10);
+ item2->setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable);
+
+ // right mouse press & release over an item should not make it selected
+ sendMousePress(&scene, item1->boundingRect().center(), Qt::RightButton);
+ QVERIFY(!item1->isSelected());
+ sendMouseRelease(&scene, item1->boundingRect().center(), Qt::RightButton);
+ QVERIFY(!item1->isSelected());
+
+ // right mouse press over one item, moving over another item,
+ // and then releasing should make neither of the items selected
+ sendMousePress(&scene, item1->boundingRect().center(), Qt::RightButton);
+ QVERIFY(!item1->isSelected());
+ QVERIFY(!item2->isSelected());
+ sendMouseMove(&scene, item2->boundingRect().center(), Qt::RightButton);
+ QVERIFY(!item1->isSelected());
+ QVERIFY(!item2->isSelected());
+ sendMouseRelease(&scene, item2->boundingRect().center(), Qt::RightButton);
+ QVERIFY(!item1->isSelected());
+ QVERIFY(!item2->isSelected());
+}
+
QTEST_MAIN(tst_QGraphicsItem)
#include "tst_qgraphicsitem.moc"
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index beea46c979..c2e6d33adb 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -983,6 +983,7 @@ void tst_QGraphicsProxyWidget::hoverEnterLeaveEvent()
// in
QTest::mouseMove(&view, QPoint(50, 50));
+ QSKIP("QTBUG-25294");
QTRY_COMPARE(widget->testAttribute(Qt::WA_UnderMouse), hasWidget ? true : false);
// ### this attribute isn't supported
QCOMPARE(widget->enterCount, hasWidget ? 1 : 0);
diff --git a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
index 7794fde2c7..dd432912f3 100644
--- a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
@@ -307,8 +307,8 @@ void tst_QGraphicsSceneIndex::clear()
QGraphicsView view(&scene);
view.show();
- QVERIFY(QTest::qWaitForWindowActive(&view));
qApp->setActiveWindow(&view);
+ QVERIFY(QTest::qWaitForWindowActive(&view));
scene.clear();
// Make sure the index is re-generated after QGraphicsScene::clear();
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index 4cfdfccd63..31439e203c 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -1214,7 +1214,7 @@ void tst_QGraphicsWidget::layoutDirection()
{
QFETCH(Qt::LayoutDirection, layoutDirection);
QGraphicsScene scene;
- QGraphicsView *view = new QGraphicsView(&scene);
+ QScopedPointer<QGraphicsView> view(new QGraphicsView(&scene));
SubQGraphicsWidget widget;
scene.addItem(&widget);
QCOMPARE(widget.layoutDirection(), Qt::LeftToRight);
@@ -1229,14 +1229,13 @@ void tst_QGraphicsWidget::layoutDirection()
widget.setLayoutDirection(layoutDirection);
QCOMPARE(widget.testAttribute(Qt::WA_SetLayoutDirection), true);
view->show();
- QVERIFY(QTest::qWaitForWindowExposed(view));
+ QVERIFY(QTest::qWaitForWindowExposed(view.data()));
for (int i = 0; i < children.count(); ++i) {
QTRY_COMPARE(children[i]->layoutDirection(), layoutDirection);
QTRY_COMPARE(children[i]->testAttribute(Qt::WA_SetLayoutDirection), false);
view->repaint();
QTRY_COMPARE(children[i]->m_painterLayoutDirection, layoutDirection);
}
- delete view;
}
void tst_QGraphicsWidget::paint_data()
@@ -1696,8 +1695,26 @@ void tst_QGraphicsWidget::verifyFocusChain()
delete w;
}
{
+ // QTBUG-30923:
+ // Child QGraphicsWidget with tabFocusFirst gets removed & deleted should not crash.
+ // This case simulates what QtQuick1 does when you have QGraphicsObject based
+ // item in different qml views that are loaded one after another.
+ QGraphicsItem *parent1 = new QGraphicsRectItem(0); // root item
+ scene.addItem(parent1);
+ for (int i = 0; i < 2; i++) {
+ SubQGraphicsWidget *w1 = new SubQGraphicsWidget(parent1);
+ w1->setFocusPolicy(Qt::StrongFocus);
+ w1->setFocus();
+ QVERIFY(w1->hasFocus());
+ scene.removeItem(w1);
+ delete w1;
+ QApplication::processEvents();
+ }
+ delete parent1;
+ }
+ {
// remove the tabFocusFirst widget from the scene.
- QWidget *window = new QWidget;
+ QScopedPointer<QWidget> window(new QWidget);
QVBoxLayout *layout = new QVBoxLayout;
window->setLayout(layout);
QLineEdit *lineEdit = new QLineEdit;
@@ -1717,8 +1734,8 @@ void tst_QGraphicsWidget::verifyFocusChain()
w1_2->setFocusPolicy(Qt::StrongFocus);
scene.addItem(w1_2);
window->show();
- QApplication::setActiveWindow(window);
- QVERIFY(QTest::qWaitForWindowActive(window));
+ QApplication::setActiveWindow(window.data());
+ QVERIFY(QTest::qWaitForWindowActive(window.data()));
lineEdit->setFocus();
QTRY_VERIFY(lineEdit->hasFocus());
@@ -1758,7 +1775,6 @@ void tst_QGraphicsWidget::verifyFocusChain()
QTest::keyPress(QApplication::focusWidget(), Qt::Key_Tab);
QTRY_VERIFY(w1_3->hasFocus());
QTRY_VERIFY(compareFocusChain(view, QList<QGraphicsItem*>() << w1_3 << w1_4));
- delete window;
}
}
@@ -2962,16 +2978,16 @@ void tst_QGraphicsWidget::respectHFW()
QGraphicsScene scene;
HFWWidget *window = new HFWWidget;
scene.addItem(window);
- QGraphicsView *view = new QGraphicsView(&scene);
+ QScopedPointer<QGraphicsView> view(new QGraphicsView(&scene));
view->resize(400, 400);
view->setSceneRect(-100, -100, 300,300);
view->show();
window->setGeometry(0, 0, 70, 70);
- QVERIFY(QTest::qWaitForWindowActive(view));
+ QVERIFY(QTest::qWaitForWindowActive(view.data()));
{ // here we go - simulate a interactive resize of the window
- QTest::mouseMove(view, view->mapFromScene(71, 71)); // bottom right corner
+ QTest::mouseMove(view.data(), view->mapFromScene(71, 71)); // bottom right corner
QTest::mousePress(view->viewport(), Qt::LeftButton, 0, view->mapFromScene(71, 71), 200);
view->grabMouse();
@@ -3157,15 +3173,14 @@ void tst_QGraphicsWidget::initialShow2()
QGraphicsScene dummyScene(0, 0, 200, 200);
dummyScene.addItem(new QGraphicsRectItem(0, 0, 100, 100));
- QGraphicsView *dummyView = new QGraphicsView(&dummyScene);
+ QScopedPointer<QGraphicsView> dummyView(new QGraphicsView(&dummyScene));
dummyView->setWindowFlags(Qt::X11BypassWindowManagerHint);
EventSpy paintSpy(dummyView->viewport(), QEvent::Paint);
dummyView->show();
- qApp->setActiveWindow(dummyView);
- QVERIFY(QTest::qWaitForWindowActive(dummyView));
+ qApp->setActiveWindow(dummyView.data());
+ QVERIFY(QTest::qWaitForWindowActive(dummyView.data()));
const int expectedRepaintCount = paintSpy.count();
- delete dummyView;
- dummyView = 0;
+ dummyView.reset();
MyGraphicsWidget *widget = new MyGraphicsWidget;
widget->resize(100, 100);
@@ -3179,7 +3194,7 @@ void tst_QGraphicsWidget::initialShow2()
qApp->setActiveWindow(&view);
QVERIFY(QTest::qWaitForWindowActive(&view));
-#if defined(Q_OS_WIN) || defined(UBUNTU_LUCID)
+#ifdef UBUNTU_LUCID
QEXPECT_FAIL("", "QTBUG-20778", Abort);
#endif
QTRY_COMPARE(widget->repaints, expectedRepaintCount);