Merge remote-tracking branch 'origin/2.7'

Conflicts:
	src/plugins/qmldesigner/components/formeditor/abstractcustomtool.cpp

Change-Id: I4e0a85795e7f4bfcdc21d106517517b527f85104
This commit is contained in:
Eike Ziller
2013-04-30 11:43:33 +02:00
39 changed files with 267 additions and 112 deletions
@@ -137,9 +137,9 @@ QImage GraphicalNodeInstance::renderImage() const
{
updateDirtyNodeRecursive(quickItem());
QRectF boundingRect = boundingRectWithStepChilds(quickItem());
QRectF renderBoundingRect = boundingRect();
QImage renderImage = designerSupport()->renderImageForItem(quickItem(), boundingRect, boundingRect.size().toSize());
QImage renderImage = designerSupport()->renderImageForItem(quickItem(), renderBoundingRect, renderBoundingRect.size().toSize());
renderImage = renderImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
@@ -238,13 +238,13 @@ static inline bool isRectangleSane(const QRectF &rect)
return rect.isValid() && (rect.width() < 10000) && (rect.height() < 10000);
}
QRectF GraphicalNodeInstance::boundingRectWithStepChilds(QQuickItem *parentItem) const
QRectF GraphicalNodeInstance::boundingRectWithStepChilds(QQuickItem *item) const
{
QRectF boundingRect = parentItem->boundingRect();
QRectF boundingRect = item->boundingRect();
foreach (QQuickItem *childItem, parentItem->childItems()) {
foreach (QQuickItem *childItem, item->childItems()) {
if (!nodeInstanceServer()->hasInstanceForObject(childItem)) {
QRectF transformedRect = childItem->mapRectToItem(parentItem, boundingRectWithStepChilds(childItem));
QRectF transformedRect = childItem->mapRectToItem(item, boundingRectWithStepChilds(childItem));
if (isRectangleSane(transformedRect))
boundingRect = boundingRect.united(transformedRect);
}
@@ -42,7 +42,7 @@
#include <QFileSystemWatcher>
#include <QPixmapCache>
#include <QQuickItem>
#include <QQmlParserStatus>
#include <QTextDocument>
#include <QLibraryInfo>
@@ -1250,7 +1250,9 @@ bool ObjectNodeInstance::resetStateProperty(const ObjectNodeInstance::Pointer &/
void ObjectNodeInstance::doComponentComplete()
{
QQmlParserStatus *qmlParserStatus = dynamic_cast< QQmlParserStatus*>(object());
if (qmlParserStatus)
qmlParserStatus->componentComplete();
}
bool ObjectNodeInstance::isRootNodeInstance() const
@@ -85,6 +85,26 @@ void Qt5InformationNodeInstanceServer::token(const TokenCommand &command)
startRenderTimer();
}
bool Qt5InformationNodeInstanceServer::isDirtyRecursiveForNonInstanceItems(QQuickItem *item) const
{
static DesignerSupport::DirtyType informationsDirty = DesignerSupport::DirtyType(DesignerSupport::TransformUpdateMask
| DesignerSupport::ContentUpdateMask
| DesignerSupport::Visible
| DesignerSupport::ZValue
| DesignerSupport::OpacityValue);
if (DesignerSupport::isDirty(item, informationsDirty))
return true;
foreach (QQuickItem *childItem, item->childItems()) {
if (!hasInstanceForObject(childItem) && DesignerSupport::isDirty(childItem, informationsDirty))
return true;
}
return false;
}
void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
{
static bool inFunction = false;
@@ -95,19 +115,13 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
QSet<ServerNodeInstance> informationChangedInstanceSet;
QVector<InstancePropertyPair> propertyChangedList;
bool adjustSceneRect = false;
if (quickView()) {
foreach (QQuickItem *item, allItems()) {
if (item && hasInstanceForObject(item)) {
ServerNodeInstance instance = instanceForObject(item);
DesignerSupport::DirtyType informationsDirty = DesignerSupport::DirtyType(DesignerSupport::TransformUpdateMask
| DesignerSupport::ContentUpdateMask
| DesignerSupport::Visible
| DesignerSupport::ZValue
| DesignerSupport::OpacityValue);
if (DesignerSupport::isDirty(item, informationsDirty))
if (isDirtyRecursiveForNonInstanceItems(item))
informationChangedInstanceSet.insert(instance);
@@ -115,11 +129,6 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
m_parentChangedSet.insert(instance);
informationChangedInstanceSet.insert(instance);
}
// if (d->geometryChanged) {
// if (instance.isRootNodeInstance())
// declarativeView()->scene()->setSceneRect(item->boundingRect());
// }
}
}
@@ -128,9 +137,6 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
const QString propertyName = property.second;
if (instance.isValid()) {
if (instance.isRootNodeInstance() && (propertyName == "width" || propertyName == "height"))
adjustSceneRect = true;
if (propertyName.contains("anchors"))
informationChangedInstanceSet.insert(instance);
@@ -154,13 +160,6 @@ void Qt5InformationNodeInstanceServer::collectItemChangesAndSendChangeCommands()
m_parentChangedSet.clear();
}
// if (adjustSceneRect) {
// QRectF boundingRect = rootNodeInstance().boundingRect();
// if (boundingRect.isValid()) {
// declarativeView()->setSceneRect(boundingRect);
// }
// }
if (!m_completedComponentList.isEmpty()) {
nodeInstanceClient()->componentCompleted(createComponentCompletedCommand(m_completedComponentList));
m_completedComponentList.clear();
@@ -52,7 +52,7 @@ protected:
void collectItemChangesAndSendChangeCommands() Q_DECL_OVERRIDE;
void sendChildrenChangedCommand(const QList<ServerNodeInstance> childList);
void sendTokenBack();
bool isDirtyRecursiveForNonInstanceItems(QQuickItem *item) const;
private:
QSet<ServerNodeInstance> m_parentChangedSet;