From cdeee01c73695b9aba1be4cf8326749b5a2b74e4 Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Tue, 18 May 2010 21:24:33 +0200
Subject: [PATCH] Generate a style option for the paint function in the node
 instances

WebView is expecting a valid QStyleOptionGraphicsItem argument.

Reviewed-by: kkoehne
---
 .../instances/graphicsobjectnodeinstance.cpp  | 22 +++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
index 4fe80a1fcde..926d4465dde 100644
--- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
@@ -31,6 +31,8 @@
 
 #include "invalidnodeinstanceexception.h"
 #include <QGraphicsObject>
+#include "private/qgraphicsitem_p.h"
+#include <QStyleOptionGraphicsItem>
 #include "nodemetainfo.h"
 
 namespace QmlDesigner {
@@ -153,13 +155,21 @@ bool GraphicsObjectNodeInstance::equalGraphicsItem(QGraphicsItem *item) const
     return item == graphicsObject();
 }
 
+void initOption(QGraphicsItem *item, QStyleOptionGraphicsItem *option, const QTransform &transform)
+{
+    QGraphicsItemPrivate *privateItem = QGraphicsItemPrivate::get(item);
+    privateItem->initStyleOption(option, transform, QRegion());
+}
+
 void GraphicsObjectNodeInstance::paintRecursively(QGraphicsItem *graphicsItem, QPainter *painter) const
 {
     if (graphicsItem->isVisible()) {
         painter->save();
         painter->setTransform(graphicsItem->itemTransform(graphicsItem->parentItem()), true);
         painter->setOpacity(graphicsItem->opacity() * painter->opacity());
-        graphicsItem->paint(painter, 0);
+        QStyleOptionGraphicsItem option;
+        initOption(graphicsItem, &option, painter->transform());
+        graphicsItem->paint(painter, &option);
         foreach(QGraphicsItem *childItem, graphicsItem->childItems()) {
             paintRecursively(childItem, painter);
         }
@@ -171,12 +181,16 @@ void GraphicsObjectNodeInstance::paint(QPainter *painter) const
 {
     painter->save();
     Q_ASSERT(graphicsObject());
-    if (hasContent())
-        graphicsObject()->paint(painter, 0);
+    if (hasContent()) {
+        QStyleOptionGraphicsItem option;
+        initOption(graphicsObject(), &option, painter->transform());
+        graphicsObject()->paint(painter, &option);
 
+    }
     foreach(QGraphicsItem *graphicsItem, graphicsObject()->childItems()) {
         QGraphicsObject *graphicsObject = qgraphicsitem_cast<QGraphicsObject*>(graphicsItem);
-        if (graphicsObject && !nodeInstanceView()->hasInstanceForObject(graphicsObject))
+        if (graphicsObject
+            && !nodeInstanceView()->hasInstanceForObject(graphicsObject))
             paintRecursively(graphicsItem, painter);
     }
 
-- 
GitLab