diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-05-23 21:27:07 +0200 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-05-23 21:27:07 +0200 |
commit | d3a8bc803cd7c4ce106038bfc4b37cdd6bb8e177 (patch) | |
tree | 3b6db0d4869f334d0eb4559c5ae457995cbe913e /tests/auto/widgets/graphicsview | |
parent | d934ddc297f6db94dbc548fe01da64350f13577d (diff) | |
parent | 47a7628023610904c6ac52e23fa289f75f349b4e (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')
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); |