From 9250b611c823ed00f9ef98d4db0bf84293d5b1a8 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Mon, 29 Aug 2011 20:55:49 +0200 Subject: [PATCH] QmlDesigner.NodeInstances: Fix image rendering Call DesignerSupport::updateDirtyNode() recursively for every item which is not under our control. Change-Id: Ie6c784965d1557ece81176fc405864f1328733f7 Reviewed-on: http://codereview.qt.nokia.com/3972 Reviewed-by: Qt Sanity Bot Reviewed-by: Thomas Hartmann --- .../qml2puppet/instances/sgitemnodeinstance.cpp | 14 ++++++++++++-- .../qml2puppet/instances/sgitemnodeinstance.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp index b61775e816..81f90b0033 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.cpp @@ -184,14 +184,24 @@ bool SGItemNodeInstance::equalSGItem(QSGItem *item) const return item == sgItem(); } +void SGItemNodeInstance::updateDirtyNodeRecursive(QSGItem *parentItem) const +{ + DesignerSupport::updateDirtyNode(parentItem); + + foreach (QSGItem *childItem, parentItem->childItems()) { + if (!nodeInstanceServer()->hasInstanceForObject(childItem)) + updateDirtyNodeRecursive(childItem); + } +} + QImage SGItemNodeInstance::renderImage() const { + updateDirtyNodeRecursive(sgItem()); + QImage image = designerSupport()->renderImageForItem(sgItem()); image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied); - qDebug() << __FUNCTION__ << image.size(); - return image; } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h index b99e3552c9..5f814f6663 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/sgitemnodeinstance.h @@ -116,6 +116,7 @@ protected: void resetVertical(); void refresh(); QRectF boundingRectWithStepChilds(QSGItem *parentItem) const; + void updateDirtyNodeRecursive(QSGItem *parentItem) const; private: //variables bool m_hasHeight; -- GitLab