tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
changeset 22 79de32ba3296
parent 19 fcece45ef507
child 25 e24348a560a6
--- a/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp	Mon May 03 13:17:34 2010 +0300
+++ b/tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp	Fri May 14 16:40:13 2010 +0300
@@ -111,8 +111,6 @@
     void fontPropagationSceneChange();
     void geometry_data();
     void geometry();
-    void width();
-    void height();
     void getContentsMargins_data();
     void getContentsMargins();
     void initStyleOption_data();
@@ -167,6 +165,7 @@
     void polishEvent2();
     void initialShow();
     void initialShow2();
+    void itemChangeEvents();
 
     // Task fixes
     void task236127_bspTreeIndexFails();
@@ -767,42 +766,14 @@
 {
     SubQGraphicsWidget widget;
     QCOMPARE(widget.geometry(), QRectF(widget.pos(), widget.size()));
-    QSignalSpy spy(&widget, SIGNAL(geometryChanged()));
+
     QFETCH(QPointF, pos);
     QFETCH(QSizeF, size);
     widget.setPos(pos);
     widget.resize(size);
-    if (!size.isNull())
-        QCOMPARE(spy.count(), 1);
     QCOMPARE(widget.geometry(), QRectF(pos, size));
 }
 
-void tst_QGraphicsWidget::width()
-{
-    QGraphicsWidget w;
-    QCOMPARE(w.property("width").toReal(), qreal(0));
-    QSignalSpy spy(&w, SIGNAL(widthChanged()));
-    w.setProperty("width", qreal(50));
-    QCOMPARE(w.property("width").toReal(), qreal(50));
-    QCOMPARE(spy.count(), 1);
-    //calling old school setGeometry should work too
-    w.setGeometry(0, 0, 200, 200);
-    QCOMPARE(spy.count(), 2);
-}
-
-void tst_QGraphicsWidget::height()
-{
-    QGraphicsWidget w;
-    QCOMPARE(w.property("height").toReal(), qreal(0));
-    QSignalSpy spy(&w, SIGNAL(heightChanged()));
-    w.setProperty("height", qreal(50));
-    QCOMPARE(w.property("height").toReal(), qreal(50));
-    QCOMPARE(spy.count(), 1);
-    //calling old school setGeometry should work too
-    w.setGeometry(0, 0, 200, 200);
-    QCOMPARE(spy.count(), 2);
-}
-
 void tst_QGraphicsWidget::getContentsMargins_data()
 {
     QTest::addColumn<qreal>("left");
@@ -2916,6 +2887,91 @@
     QTRY_COMPARE(widget->repaints, expectedRepaintCount);
 }
 
+void tst_QGraphicsWidget::itemChangeEvents()
+{
+    class TestGraphicsWidget : public QGraphicsWidget
+    { public:
+        TestGraphicsWidget() : QGraphicsWidget() {}
+        QHash<QEvent::Type, QVariant> valueDuringEvents;
+        bool event(QEvent *event) {
+            Q_UNUSED(event);
+            switch (event->type()) {
+            case QEvent::EnabledChange: {
+                valueDuringEvents.insert(QEvent::EnabledChange, isEnabled());
+                break;
+            }
+            case QEvent::ParentAboutToChange: {
+                valueDuringEvents.insert(QEvent::ParentAboutToChange, qVariantFromValue(parentItem()));
+                break;
+            }
+            case QEvent::ParentChange: {
+                valueDuringEvents.insert(QEvent::ParentChange, qVariantFromValue(parentItem()));
+                break;
+            }
+            case QEvent::CursorChange: {
+                valueDuringEvents.insert(QEvent::CursorChange, int(cursor().shape()));
+                break;
+            }
+            case QEvent::ToolTipChange: {
+                valueDuringEvents.insert(QEvent::ToolTipChange, toolTip());
+                break;
+            }
+            default: {
+                break;
+            }
+            }
+            return true;
+        }
+        void showEvent(QShowEvent *event) {
+            Q_UNUSED(event);
+            valueDuringEvents.insert(QEvent::Show, isVisible());
+        }
+        void hideEvent(QHideEvent *event) {
+            Q_UNUSED(event);
+            valueDuringEvents.insert(QEvent::Hide, isVisible());
+        }
+    };
+
+    QGraphicsScene scene;
+    QGraphicsView view(&scene);
+    QGraphicsWidget *parent = new QGraphicsWidget;
+    scene.addItem(parent);
+    view.show();
+    QTest::qWaitForWindowShown(&view);
+
+    TestGraphicsWidget *item = new TestGraphicsWidget;
+    item->setParentItem(parent);
+    // ParentAboutToChange should be triggered before the parent has changed
+    QTRY_COMPARE(qVariantValue<QGraphicsItem *>(item->valueDuringEvents.value(QEvent::ParentAboutToChange)),
+             static_cast<QGraphicsItem *>(0));
+    // ParentChange should be triggered after the parent has changed
+    QTRY_COMPARE(qVariantValue<QGraphicsItem *>(item->valueDuringEvents.value(QEvent::ParentChange)),
+             static_cast<QGraphicsItem *>(parent));
+
+    // ShowEvent should be triggered before the item is shown
+    QTRY_VERIFY(!item->valueDuringEvents.value(QEvent::Show).toBool());
+
+    // HideEvent should be triggered after the item is hidden
+    QVERIFY(item->isVisible());
+    item->setVisible(false);
+    QVERIFY(!item->isVisible());
+    QTRY_VERIFY(!item->valueDuringEvents.value(QEvent::Hide).toBool());
+
+    // CursorChange should be triggered after the cursor has changed
+    item->setCursor(Qt::PointingHandCursor);
+    QTRY_COMPARE(item->valueDuringEvents.value(QEvent::CursorChange).toInt(), int(item->cursor().shape()));
+
+    // ToolTipChange should be triggered after the tooltip has changed
+    item->setToolTip("tooltipText");
+    QTRY_COMPARE(item->valueDuringEvents.value(QEvent::ToolTipChange).toString(), item->toolTip());
+
+    // EnabledChange should be triggered after the enabled state has changed
+    QVERIFY(item->isEnabled());
+    item->setEnabled(false);
+    QVERIFY(!item->isEnabled());
+    QTRY_VERIFY(!item->valueDuringEvents.value(QEvent::EnabledChange).toBool());
+}
+
 void tst_QGraphicsWidget::QT_BUG_6544_tabFocusFirstUnsetWhenRemovingItems()
 {
     QGraphicsScene scene;