summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorMarcel Krems <m.krems@software-vision.eu>2013-08-31 16:42:43 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-06 23:21:18 +0200
commit730bc064a070e886e10950ccfd59780e8976f5fd (patch)
tree9d450ac04ea1d5e07a8f83f89a0d0f7002114fa6 /tests/auto
parentba43b70132b661d1b8d99af5258fca3567fe776c (diff)
Forward QGraphicsView::mouseDoubleClickEvent
Do the same as in mousePressEvent. Otherwise it is not possible to handle the event in one of the graphics views parents. Task-number: QTBUG-8061 Change-Id: I67c7635361a9ed595c513c28ea016e6253fa2101 Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp114
1 files changed, 109 insertions, 5 deletions
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 9e06435ca7..7a0ba50ff0 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -221,6 +221,9 @@ private slots:
void scrollBarRanges_data();
void scrollBarRanges();
void acceptMousePressEvent();
+ void acceptMouseDoubleClickEvent();
+ void forwardMousePress();
+ void forwardMouseDoubleClick();
void replayMouseMove();
void itemsUnderMouse();
void embeddedViews();
@@ -2832,16 +2835,22 @@ class TestView : public QGraphicsView
{
public:
TestView(QGraphicsScene *scene)
- : QGraphicsView(scene), accepted(false)
+ : QGraphicsView(scene), pressAccepted(false), doubleClickAccepted(false)
{ }
- bool accepted;
+ bool pressAccepted;
+ bool doubleClickAccepted;
protected:
void mousePressEvent(QMouseEvent *event)
{
QGraphicsView::mousePressEvent(event);
- accepted = event->isAccepted();
+ pressAccepted = event->isAccepted();
+ }
+ void mouseDoubleClickEvent(QMouseEvent *event)
+ {
+ QGraphicsView::mouseDoubleClickEvent(event);
+ doubleClickAccepted = event->isAccepted();
}
};
@@ -2859,14 +2868,109 @@ void tst_QGraphicsView::acceptMousePressEvent()
Qt::LeftButton, 0, 0);
event.setAccepted(false);
QApplication::sendEvent(view.viewport(), &event);
- QVERIFY(!view.accepted);
+ QVERIFY(!view.pressAccepted);
scene.addRect(0, 0, 2000, 2000)->setFlag(QGraphicsItem::ItemIsMovable);
qApp->processEvents(); // ensure scene rect is updated
QApplication::sendEvent(view.viewport(), &event);
- QVERIFY(view.accepted);
+ QVERIFY(view.pressAccepted);
+}
+
+void tst_QGraphicsView::acceptMouseDoubleClickEvent()
+{
+ QGraphicsScene scene;
+
+ TestView view(&scene);
+ view.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&view));
+
+ QMouseEvent event(QEvent::MouseButtonDblClick,
+ view.viewport()->rect().center(),
+ view.viewport()->mapToGlobal(view.viewport()->rect().center()),
+ Qt::LeftButton, 0, 0);
+ event.setAccepted(false);
+ QApplication::sendEvent(view.viewport(), &event);
+ QVERIFY(!view.doubleClickAccepted);
+
+ scene.addRect(0, 0, 2000, 2000)->setFlag(QGraphicsItem::ItemIsMovable);
+
+ qApp->processEvents(); // ensure scene rect is updated
+
+ QApplication::sendEvent(view.viewport(), &event);
+ QVERIFY(view.doubleClickAccepted);
+}
+
+class TestWidget : public QWidget
+{
+public:
+ TestWidget()
+ : QWidget(), pressForwarded(false), doubleClickForwarded(false)
+ { }
+
+ bool pressForwarded;
+ bool doubleClickForwarded;
+
+protected:
+ void mousePressEvent(QMouseEvent *event)
+ {
+ QWidget::mousePressEvent(event);
+ pressForwarded = true;
+ }
+ void mouseDoubleClickEvent(QMouseEvent *event)
+ {
+ QWidget::mouseDoubleClickEvent(event);
+ doubleClickForwarded = true;
+ }
+};
+
+void tst_QGraphicsView::forwardMousePress()
+{
+ TestWidget widget;
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ QHBoxLayout layout;
+ widget.setLayout(&layout);
+ layout.addWidget(&view);
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+
+ widget.pressForwarded = false;
+ QTest::mouseClick(view.viewport(), Qt::LeftButton);
+ QVERIFY(widget.pressForwarded);
+
+ scene.addRect(0, 0, 2000, 2000);
+
+ qApp->processEvents(); // ensure scene rect is updated
+
+ widget.pressForwarded = false;
+ QTest::mouseClick(view.viewport(), Qt::LeftButton);
+ QVERIFY(widget.pressForwarded);
+}
+
+void tst_QGraphicsView::forwardMouseDoubleClick()
+{
+ TestWidget widget;
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ QHBoxLayout layout;
+ widget.setLayout(&layout);
+ layout.addWidget(&view);
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+
+ widget.doubleClickForwarded = false;
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton);
+ QVERIFY(widget.doubleClickForwarded);
+
+ scene.addRect(0, 0, 2000, 2000);
+
+ qApp->processEvents(); // ensure scene rect is updated
+
+ widget.doubleClickForwarded = false;
+ QTest::mouseDClick(view.viewport(), Qt::LeftButton);
+ QVERIFY(widget.doubleClickForwarded);
}
void tst_QGraphicsView::replayMouseMove()