tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp
changeset 30 5dc02b23752f
parent 18 2f34d5167611
child 37 758a864f9613
--- a/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp	Wed Jun 23 19:07:03 2010 +0300
+++ b/tests/auto/qstylesheetstyle/tst_qstylesheetstyle.cpp	Tue Jul 06 15:10:48 2010 +0300
@@ -98,6 +98,7 @@
     void complexWidgetFocus();
     void task188195_baseBackground();
     void task232085_spinBoxLineEditBg();
+    void changeStyleInChangeEvent();
 
     //at the end because it mess with the style.
     void widgetStyle();
@@ -1256,7 +1257,7 @@
     QStyleOptionViewItemV4 opt;
     opt.initFrom(w);
     opt.features |= QStyleOptionViewItemV2::HasCheckIndicator;
-    QVERIFY(pb5->style()->subElementRect(QStyle::SE_ItemViewItemCheckIndicator, 
+    QVERIFY(pb5->style()->subElementRect(QStyle::SE_ItemViewItemCheckIndicator,
             &opt, pb5).width() == 3);
     delete w;
     delete proxy;
@@ -1579,6 +1580,34 @@
             .toLocal8Bit().constData());
 }
 
+class ChangeEventWidget : public QWidget
+{ public:
+    void changeEvent(QEvent * event)
+    {
+        if(event->type() == QEvent::StyleChange) {
+            static bool recurse = false;
+            if (!recurse) {
+                recurse = true;
+                QStyle *style = new QMotifStyle;
+                style->setParent(this);
+                setStyle(style);
+                recurse = false;
+            }
+        }
+        QWidget::changeEvent(event);
+    }
+};
+
+void tst_QStyleSheetStyle::changeStyleInChangeEvent()
+{   //must not crash;
+    ChangeEventWidget wid;
+    wid.ensurePolished();
+    wid.setStyleSheet(" /* */ ");
+    wid.ensurePolished();
+    wid.setStyleSheet(" /* ** */ ");
+    wid.ensurePolished();
+}
+
 QTEST_MAIN(tst_QStyleSheetStyle)
 #include "tst_qstylesheetstyle.moc"