Commit 7fa9e52d authored by Marco Bubke's avatar Marco Bubke

QmlDesigner.NodeInstances: Create effect items only in the render process

Change-Id: I0506bf898582ba8e26a22f51737eae4d82f06c63
Reviewed-on: http://codereview.qt.nokia.com/4004Reviewed-by: default avatarQt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: default avatarThomas Hartmann <Thomas.Hartmann@nokia.com>
parent d9b10dca
......@@ -60,6 +60,8 @@
#include "completecomponentcommand.h"
#include "componentcompletedcommand.h"
#include "createscenecommand.h"
#include "sgitemnodeinstance.h"
#include "dummycontextobject.h"
......@@ -70,6 +72,7 @@ namespace QmlDesigner {
Qt5RenderNodeInstanceServer::Qt5RenderNodeInstanceServer(NodeInstanceClientInterface *nodeInstanceClient) :
Qt5NodeInstanceServer(nodeInstanceClient)
{
Internal::SGItemNodeInstance::createEffectItem(true);
}
void Qt5RenderNodeInstanceServer::collectItemChangesAndSendChangeCommands()
......
......@@ -45,6 +45,8 @@
namespace QmlDesigner {
namespace Internal {
bool SGItemNodeInstance::s_createEffectItem = false;
SGItemNodeInstance::SGItemNodeInstance(QSGItem *item)
: ObjectNodeInstance(item),
m_hasHeight(false),
......@@ -186,23 +188,27 @@ bool SGItemNodeInstance::equalSGItem(QSGItem *item) const
void SGItemNodeInstance::updateDirtyNodeRecursive(QSGItem *parentItem) const
{
DesignerSupport::updateDirtyNode(parentItem);
foreach (QSGItem *childItem, parentItem->childItems()) {
if (!nodeInstanceServer()->hasInstanceForObject(childItem))
updateDirtyNodeRecursive(childItem);
}
DesignerSupport::updateDirtyNode(parentItem);
}
QImage SGItemNodeInstance::renderImage() const
{
updateDirtyNodeRecursive(sgItem());
QImage image = designerSupport()->renderImageForItem(sgItem(), boundingRectWithStepChilds(sgItem()));
QRectF boundingRect = boundingRectWithStepChilds(sgItem());
QImage renderImage = designerSupport()->renderImageForItem(sgItem(), boundingRect, boundingRect.size().toSize());
image = image.convertToFormat(QImage::Format_ARGB32_Premultiplied);
qDebug() << __FUNCTION__ << renderImage.size();
return image;
renderImage = renderImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
return renderImage;
}
bool SGItemNodeInstance::isMovable() const
......@@ -244,7 +250,9 @@ void SGItemNodeInstance::initialize(const ObjectNodeInstance::Pointer &objectNod
sgItem()->setParentItem(qobject_cast<QSGItem*>(nodeInstanceServer()->sgView()->rootObject()));
}
designerSupport()->refFromEffectItem(sgItem());
if (s_createEffectItem || instanceId() == 0)
designerSupport()->refFromEffectItem(sgItem());
ObjectNodeInstance::initialize(objectNodeInstance);
sgItem()->update();
}
......@@ -311,6 +319,8 @@ QRectF SGItemNodeInstance::boundingRect() const
void SGItemNodeInstance::setPropertyVariant(const QString &name, const QVariant &value)
{
if (name == "width" || name == "height")
qDebug() << __FUNCTION__ << name << value;
if (name == "state")
return; // states are only set by us
......@@ -583,6 +593,11 @@ Qt5NodeInstanceServer *SGItemNodeInstance::qt5NodeInstanceServer() const
return qobject_cast<Qt5NodeInstanceServer*>(nodeInstanceServer());
}
void SGItemNodeInstance::createEffectItem(bool createEffectItem)
{
s_createEffectItem = createEffectItem;
}
} // namespace Internal
} // namespace QmlDesigner
......@@ -109,6 +109,8 @@ public:
DesignerSupport *designerSupport() const;
Qt5NodeInstanceServer *qt5NodeInstanceServer() const;
static void createEffectItem(bool createEffectItem);
protected:
SGItemNodeInstance(QSGItem*);
QSGItem *sgItem() const;
......@@ -128,6 +130,7 @@ private: //variables
double m_y;
double m_width;
double m_height;
static bool s_createEffectItem;
};
} // namespace Internal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment