QmlDesigner: Prepare for other layout items

Change-Id: I831e68877eb3d785b4bbb99db002ab8e42158d75
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
Marco Bubke
2013-04-18 18:42:58 +02:00
parent 40b62e1cfa
commit ff4457bb46
25 changed files with 67 additions and 55 deletions

View File

@@ -81,8 +81,8 @@ QString InformationContainer::nameAsString() const
return QLatin1String("PenWidth"); return QLatin1String("PenWidth");
case Position: case Position:
return QLatin1String("Position"); return QLatin1String("Position");
case IsInPositioner: case IsInLayoutable:
return QLatin1String("IsInPositioner"); return QLatin1String("IsInLayoutable");
case SceneTransform: case SceneTransform:
return QLatin1String("SceneTransform"); return QLatin1String("SceneTransform");
case IsResizable: case IsResizable:

View File

@@ -47,7 +47,7 @@ enum InformationName
InstanceTypeForProperty, InstanceTypeForProperty,
PenWidth, PenWidth,
Position, Position,
IsInPositioner, IsInLayoutable,
SceneTransform, SceneTransform,
IsResizable, IsResizable,
IsMovable, IsMovable,

View File

@@ -350,8 +350,8 @@ void GraphicalNodeInstance::setPropertyVariant(const PropertyName &name, const Q
refresh(); refresh();
if (isInPositioner()) if (isInLayoutable())
parentInstance()->refreshPositioner(); parentInstance()->refreshLayoutable();
} }
void GraphicalNodeInstance::setPropertyBinding(const PropertyName &name, const QString &expression) void GraphicalNodeInstance::setPropertyBinding(const PropertyName &name, const QString &expression)
@@ -365,8 +365,8 @@ void GraphicalNodeInstance::setPropertyBinding(const PropertyName &name, const Q
refresh(); refresh();
if (isInPositioner()) if (isInLayoutable())
parentInstance()->refreshPositioner(); parentInstance()->refreshLayoutable();
} }
QVariant GraphicalNodeInstance::property(const PropertyName &name) const QVariant GraphicalNodeInstance::property(const PropertyName &name) const
@@ -423,8 +423,8 @@ void GraphicalNodeInstance::resetProperty(const PropertyName &name)
quickItem()->update(); quickItem()->update();
if (isInPositioner()) if (isInLayoutable())
parentInstance()->refreshPositioner(); parentInstance()->refreshLayoutable();
} }

View File

@@ -892,7 +892,7 @@ static QVector<InformationContainer> createInformationVector(const QList<ServerN
informationVector.append(InformationContainer(instance.instanceId(), HasContent, instance.hasContent())); informationVector.append(InformationContainer(instance.instanceId(), HasContent, instance.hasContent()));
informationVector.append(InformationContainer(instance.instanceId(), IsMovable, instance.isMovable())); informationVector.append(InformationContainer(instance.instanceId(), IsMovable, instance.isMovable()));
informationVector.append(InformationContainer(instance.instanceId(), IsResizable, instance.isResizable())); informationVector.append(InformationContainer(instance.instanceId(), IsResizable, instance.isResizable()));
informationVector.append(InformationContainer(instance.instanceId(), IsInPositioner, instance.isInPositioner())); informationVector.append(InformationContainer(instance.instanceId(), IsInLayoutable, instance.isInLayoutable()));
informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth())); informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling()));

View File

@@ -73,7 +73,7 @@ ObjectNodeInstance::ObjectNodeInstance(QObject *object)
m_deleteHeldInstance(true), m_deleteHeldInstance(true),
m_object(object), m_object(object),
m_metaObject(0), m_metaObject(0),
m_isInPositioner(false) m_isInLayoutable(false)
{ {
} }
@@ -204,6 +204,11 @@ bool ObjectNodeInstance::isGraphical() const
return false; return false;
} }
bool ObjectNodeInstance::isLayoutable() const
{
return true;
}
bool ObjectNodeInstance::equalGraphicsItem(QGraphicsItem * /*item*/) const bool ObjectNodeInstance::equalGraphicsItem(QGraphicsItem * /*item*/) const
{ {
return false; return false;
@@ -1033,17 +1038,17 @@ bool ObjectNodeInstance::isMovable() const
return false; return false;
} }
bool ObjectNodeInstance::isInPositioner() const bool ObjectNodeInstance::isInLayoutable() const
{ {
return m_isInPositioner; return m_isInLayoutable;
} }
void ObjectNodeInstance::setInPositioner(bool isInPositioner) void ObjectNodeInstance::setInLayoutable(bool isInLayoutable)
{ {
m_isInPositioner = isInPositioner; m_isInLayoutable = isInLayoutable;
} }
void ObjectNodeInstance::refreshPositioner() void ObjectNodeInstance::refreshLayoutable()
{ {
} }

View File

@@ -99,6 +99,7 @@ public:
virtual bool isQuickItem() const; virtual bool isQuickItem() const;
virtual bool isQuickWindow() const; virtual bool isQuickWindow() const;
virtual bool isGraphical() const; virtual bool isGraphical() const;
virtual bool isLayoutable() const;
virtual bool equalGraphicsItem(QGraphicsItem *item) const; virtual bool equalGraphicsItem(QGraphicsItem *item) const;
@@ -155,9 +156,9 @@ public:
virtual bool hasContent() const; virtual bool hasContent() const;
virtual bool isResizable() const; virtual bool isResizable() const;
virtual bool isMovable() const; virtual bool isMovable() const;
bool isInPositioner() const; bool isInLayoutable() const;
void setInPositioner(bool isInPositioner); void setInLayoutable(bool isInLayoutable);
virtual void refreshPositioner(); virtual void refreshLayoutable();
bool hasBindingForProperty(const PropertyName &name, bool *hasChanged = 0) const; bool hasBindingForProperty(const PropertyName &name, bool *hasChanged = 0) const;
@@ -204,7 +205,7 @@ private:
QPointer<QObject> m_object; QPointer<QObject> m_object;
NodeInstanceMetaObject *m_metaObject; NodeInstanceMetaObject *m_metaObject;
NodeInstanceSignalSpy m_signalSpy; NodeInstanceSignalSpy m_signalSpy;
bool m_isInPositioner; bool m_isInLayoutable;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -42,6 +42,11 @@ bool PositionerNodeInstance::isPositioner() const
return true; return true;
} }
bool PositionerNodeInstance::isLayoutable() const
{
return true;
}
bool PositionerNodeInstance::isResizable() const bool PositionerNodeInstance::isResizable() const
{ {
return true; return true;
@@ -87,7 +92,7 @@ QQuickBasePositioner *PositionerNodeInstance::positioner() const
return static_cast<QQuickBasePositioner*>(object()); return static_cast<QQuickBasePositioner*>(object());
} }
void PositionerNodeInstance::refreshPositioner() void PositionerNodeInstance::refreshLayoutable()
{ {
bool success = QMetaObject::invokeMethod(positioner(), "prePositioning"); bool success = QMetaObject::invokeMethod(positioner(), "prePositioning");
Q_ASSERT(success); Q_ASSERT(success);

View File

@@ -51,10 +51,11 @@ public:
void setPropertyBinding(const PropertyName &name, const QString &expression) Q_DECL_OVERRIDE; void setPropertyBinding(const PropertyName &name, const QString &expression) Q_DECL_OVERRIDE;
bool isPositioner() const Q_DECL_OVERRIDE; bool isPositioner() const Q_DECL_OVERRIDE;
bool isLayoutable() const Q_DECL_OVERRIDE;
bool isResizable() const Q_DECL_OVERRIDE; bool isResizable() const Q_DECL_OVERRIDE;
void refreshPositioner() Q_DECL_OVERRIDE; void refreshLayoutable() Q_DECL_OVERRIDE;
protected: protected:
PositionerNodeInstance(QQuickBasePositioner *item); PositionerNodeInstance(QQuickBasePositioner *item);

View File

@@ -131,14 +131,14 @@ void QuickItemNodeInstance::setResizable(bool resizable)
void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentInstance, const PropertyName &oldParentProperty, const ObjectNodeInstance::Pointer &newParentInstance, const PropertyName &newParentProperty) void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParentInstance, const PropertyName &oldParentProperty, const ObjectNodeInstance::Pointer &newParentInstance, const PropertyName &newParentProperty)
{ {
if (oldParentInstance && oldParentInstance->isPositioner()) { if (oldParentInstance && oldParentInstance->isPositioner()) {
setInPositioner(false); setInLayoutable(false);
setMovable(true); setMovable(true);
} }
ObjectNodeInstance::reparent(oldParentInstance, oldParentProperty, newParentInstance, newParentProperty); ObjectNodeInstance::reparent(oldParentInstance, oldParentProperty, newParentInstance, newParentProperty);
if (newParentInstance && newParentInstance->isPositioner()) { if (newParentInstance && newParentInstance->isPositioner()) {
setInPositioner(true); setInLayoutable(true);
setMovable(false); setMovable(false);
} }
@@ -153,8 +153,8 @@ void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParen
refresh(); refresh();
DesignerSupport::updateDirtyNode(quickItem()); DesignerSupport::updateDirtyNode(quickItem());
if (parentInstance() && isInPositioner()) if (parentInstance() && isInLayoutable())
parentInstance()->refreshPositioner(); parentInstance()->refreshLayoutable();
} }
bool QuickItemNodeInstance::isAnchoredBySibling() const bool QuickItemNodeInstance::isAnchoredBySibling() const

View File

@@ -408,9 +408,9 @@ bool ServerNodeInstance::isMovable() const
return m_nodeInstance->isMovable(); return m_nodeInstance->isMovable();
} }
bool ServerNodeInstance::isInPositioner() const bool ServerNodeInstance::isInLayoutable() const
{ {
return m_nodeInstance->isInPositioner(); return m_nodeInstance->isInLayoutable();
} }
bool ServerNodeInstance::hasAnchor(const PropertyName &name) const bool ServerNodeInstance::hasAnchor(const PropertyName &name) const

View File

@@ -130,7 +130,7 @@ public:
bool hasContent() const; bool hasContent() const;
bool isResizable() const; bool isResizable() const;
bool isMovable() const; bool isMovable() const;
bool isInPositioner() const; bool isInLayoutable() const;
bool isSubclassOf(const QString &superTypeName) const; bool isSubclassOf(const QString &superTypeName) const;
bool isRootNodeInstance() const; bool isRootNodeInstance() const;

View File

@@ -886,7 +886,7 @@ static QVector<InformationContainer> createInformationVector(const QList<ServerN
informationVector.append(InformationContainer(instance.instanceId(), HasContent, instance.hasContent())); informationVector.append(InformationContainer(instance.instanceId(), HasContent, instance.hasContent()));
informationVector.append(InformationContainer(instance.instanceId(), IsMovable, instance.isMovable())); informationVector.append(InformationContainer(instance.instanceId(), IsMovable, instance.isMovable()));
informationVector.append(InformationContainer(instance.instanceId(), IsResizable, instance.isResizable())); informationVector.append(InformationContainer(instance.instanceId(), IsResizable, instance.isResizable()));
informationVector.append(InformationContainer(instance.instanceId(), IsInPositioner, instance.isInPositioner())); informationVector.append(InformationContainer(instance.instanceId(), IsInLayoutable, instance.isInLayoutable()));
informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth())); informationVector.append(InformationContainer(instance.instanceId(), PenWidth, instance.penWidth()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredByChildren, instance.isAnchoredByChildren()));
informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling())); informationVector.append(InformationContainer(instance.instanceId(), IsAnchoredBySibling, instance.isAnchoredBySibling()));

View File

@@ -379,7 +379,7 @@ bool ServerNodeInstance::isMovable() const
return m_nodeInstance->isMovable(); return m_nodeInstance->isMovable();
} }
bool ServerNodeInstance::isInPositioner() const bool ServerNodeInstance::isInLayoutable() const
{ {
return m_nodeInstance->isInPositioner(); return m_nodeInstance->isInPositioner();
} }

View File

@@ -127,7 +127,7 @@ public:
bool hasContent() const; bool hasContent() const;
bool isResizable() const; bool isResizable() const;
bool isMovable() const; bool isMovable() const;
bool isInPositioner() const; bool isInLayoutable() const;
bool isSubclassOf(const QString &superTypeName) const; bool isSubclassOf(const QString &superTypeName) const;
bool isRootNodeInstance() const; bool isRootNodeInstance() const;

View File

@@ -144,7 +144,7 @@ static inline bool itemsHaveSameParent(const QList<ModelNode> &siblingList)
QmlItemNode currentParent = currentItem.instanceParent().toQmlItemNode(); QmlItemNode currentParent = currentItem.instanceParent().toQmlItemNode();
if (!currentParent.isValid()) if (!currentParent.isValid())
return false; return false;
if (currentItem.instanceIsInPositioner()) if (currentItem.instanceIsInLayoutable())
return false; return false;
if (currentParent != parent) if (currentParent != parent)
return false; return false;

View File

@@ -103,7 +103,7 @@ bool AbstractFormEditorTool::topSelectedItemIsMovable(const QList<QGraphicsItem*
if (formEditorItem if (formEditorItem
&& selectedNodes.contains(formEditorItem->qmlItemNode()) && selectedNodes.contains(formEditorItem->qmlItemNode())
&& formEditorItem->qmlItemNode().instanceIsMovable() && formEditorItem->qmlItemNode().instanceIsMovable()
&& !formEditorItem->qmlItemNode().instanceIsInPositioner() && !formEditorItem->qmlItemNode().instanceIsInLayoutable()
&& (formEditorItem->qmlItemNode().hasShowContent())) && (formEditorItem->qmlItemNode().hasShowContent()))
return true; return true;
} }
@@ -113,7 +113,7 @@ bool AbstractFormEditorTool::topSelectedItemIsMovable(const QList<QGraphicsItem*
if (formEditorItem if (formEditorItem
&& formEditorItem->qmlItemNode().isValid() && formEditorItem->qmlItemNode().isValid()
&& formEditorItem->qmlItemNode().instanceIsMovable() && formEditorItem->qmlItemNode().instanceIsMovable()
&& !formEditorItem->qmlItemNode().instanceIsInPositioner() && !formEditorItem->qmlItemNode().instanceIsInLayoutable()
&& selectedNodes.contains(formEditorItem->qmlItemNode())) && selectedNodes.contains(formEditorItem->qmlItemNode()))
return true; return true;
} }

View File

@@ -634,7 +634,7 @@ bool FormEditorView::isMoveToolAvailable() const
{ {
if (selectedQmlItemNodes().count() == 1) if (selectedQmlItemNodes().count() == 1)
return selectedQmlItemNodes().first().instanceIsMovable() && return selectedQmlItemNodes().first().instanceIsMovable() &&
!selectedQmlItemNodes().first().instanceIsInPositioner(); !selectedQmlItemNodes().first().instanceIsInLayoutable();
return true; return true;
} }

View File

@@ -367,7 +367,7 @@ QList<FormEditorItem*> movalbeItems(const QList<FormEditorItem*> &itemList)
QMutableListIterator<FormEditorItem*> listIterator(filteredItemList); QMutableListIterator<FormEditorItem*> listIterator(filteredItemList);
while (listIterator.hasNext()) { while (listIterator.hasNext()) {
FormEditorItem *item = listIterator.next(); FormEditorItem *item = listIterator.next();
if (!item->qmlItemNode().isValid() || !item->qmlItemNode().instanceIsMovable() || item->qmlItemNode().instanceIsInPositioner()) if (!item->qmlItemNode().isValid() || !item->qmlItemNode().instanceIsMovable() || item->qmlItemNode().instanceIsInLayoutable())
listIterator.remove(); listIterator.remove();
} }

View File

@@ -75,7 +75,7 @@ void ResizeIndicator::setItems(const QList<FormEditorItem*> &itemList)
&& item->qmlItemNode().isValid() && item->qmlItemNode().isValid()
&& item->qmlItemNode().instanceIsResizable() && item->qmlItemNode().instanceIsResizable()
&& !item->qmlItemNode().instanceHasRotationTransform() && !item->qmlItemNode().instanceHasRotationTransform()
&& !item->qmlItemNode().instanceIsInPositioner()) { && !item->qmlItemNode().instanceIsInLayoutable()) {
ResizeController controller(m_layerItem, item); ResizeController controller(m_layerItem, item);
m_itemControllerHash.insert(item, controller); m_itemControllerHash.insert(item, controller);
} }

View File

@@ -104,7 +104,7 @@ void RubberBandSelectionManipulator::select(SelectionType selectionType)
&& formEditorItem->qmlItemNode().isValid() && formEditorItem->qmlItemNode().isValid()
&& m_beginFormEditorItem->childItems().contains(formEditorItem) && m_beginFormEditorItem->childItems().contains(formEditorItem)
&& formEditorItem->qmlItemNode().instanceIsMovable() && formEditorItem->qmlItemNode().instanceIsMovable()
&& !formEditorItem->qmlItemNode().instanceIsInPositioner()) && !formEditorItem->qmlItemNode().instanceIsInLayoutable())
{ {
newNodeList.append(formEditorItem->qmlItemNode()); newNodeList.append(formEditorItem->qmlItemNode());
} }
@@ -113,7 +113,7 @@ void RubberBandSelectionManipulator::select(SelectionType selectionType)
if (newNodeList.isEmpty() if (newNodeList.isEmpty()
&& m_beginFormEditorItem->qmlItemNode().isValid() && m_beginFormEditorItem->qmlItemNode().isValid()
&& m_beginFormEditorItem->qmlItemNode().instanceIsMovable() && m_beginFormEditorItem->qmlItemNode().instanceIsMovable()
&& !m_beginFormEditorItem->qmlItemNode().instanceIsInPositioner()) && !m_beginFormEditorItem->qmlItemNode().instanceIsInLayoutable())
newNodeList.append(m_beginFormEditorItem->qmlItemNode()); newNodeList.append(m_beginFormEditorItem->qmlItemNode());
QList<QmlItemNode> nodeList; QList<QmlItemNode> nodeList;

View File

@@ -152,7 +152,7 @@ void SelectionTool::hoverMoveEvent(const QList<QGraphicsItem*> &itemList,
if (formEditorItem if (formEditorItem
&& formEditorItem->qmlItemNode().isValid() && formEditorItem->qmlItemNode().isValid()
&& !formEditorItem->qmlItemNode().instanceIsInPositioner() && !formEditorItem->qmlItemNode().instanceIsInLayoutable()
&& formEditorItem->qmlItemNode().instanceIsMovable() && formEditorItem->qmlItemNode().instanceIsMovable()
&& (formEditorItem->qmlItemNode().hasShowContent() || !m_selectOnlyContentItems)) && (formEditorItem->qmlItemNode().hasShowContent() || !m_selectOnlyContentItems))
{ {

View File

@@ -66,7 +66,7 @@ public:
bool isResizable() const; bool isResizable() const;
QTransform transform() const; QTransform transform() const;
QTransform sceneTransform() const; QTransform sceneTransform() const;
bool isInPositioner() const; bool isInLayoutable() const;
QPointF position() const; QPointF position() const;
QSizeF size() const; QSizeF size() const;
int penWidth() const; int penWidth() const;
@@ -95,7 +95,7 @@ protected:
InformationName setInformationTransform(const QTransform &transform); InformationName setInformationTransform(const QTransform &transform);
InformationName setInformationPenWith(int penWidth); InformationName setInformationPenWith(int penWidth);
InformationName setInformationPosition(const QPointF &position); InformationName setInformationPosition(const QPointF &position);
InformationName setInformationIsInPositioner(bool isInPositioner); InformationName setInformationIsInLayoutable(bool isInLayoutable);
InformationName setInformationSceneTransform(const QTransform &sceneTransform); InformationName setInformationSceneTransform(const QTransform &sceneTransform);
InformationName setInformationIsResizable(bool isResizable); InformationName setInformationIsResizable(bool isResizable);
InformationName setInformationIsMovable(bool isMovable); InformationName setInformationIsMovable(bool isMovable);

View File

@@ -70,7 +70,7 @@ public:
bool instanceIsAnchoredByChildren() const; bool instanceIsAnchoredByChildren() const;
bool instanceIsMovable() const; bool instanceIsMovable() const;
bool instanceIsResizable() const; bool instanceIsResizable() const;
bool instanceIsInPositioner() const; bool instanceIsInLayoutable() const;
bool instanceHasRotationTransform() const; bool instanceHasRotationTransform() const;
QRectF instanceBoundingRect() const; QRectF instanceBoundingRect() const;

View File

@@ -48,7 +48,7 @@ public:
hasContent(false), hasContent(false),
isMovable(false), isMovable(false),
isResizable(false), isResizable(false),
isInPositioner(false) isInLayoutable(false)
{} {}
qint32 parentInstanceId; qint32 parentInstanceId;
@@ -64,7 +64,7 @@ public:
bool hasContent; bool hasContent;
bool isMovable; bool isMovable;
bool isResizable; bool isResizable;
bool isInPositioner; bool isInLayoutable;
QHash<PropertyName, QVariant> propertyValues; QHash<PropertyName, QVariant> propertyValues;
@@ -198,10 +198,10 @@ QTransform NodeInstance::sceneTransform() const
else else
return QTransform(); return QTransform();
} }
bool NodeInstance::isInPositioner() const bool NodeInstance::isInLayoutable() const
{ {
if (isValid()) if (isValid())
return d->isInPositioner; return d->isInLayoutable;
else else
return false; return false;
} }
@@ -355,11 +355,11 @@ InformationName NodeInstance::setInformationPosition(const QPointF &position)
return NoInformationChange; return NoInformationChange;
} }
InformationName NodeInstance::setInformationIsInPositioner(bool isInPositioner) InformationName NodeInstance::setInformationIsInLayoutable(bool isInLayoutable)
{ {
if (d->isInPositioner != isInPositioner) { if (d->isInLayoutable != isInLayoutable) {
d->isInPositioner = isInPositioner; d->isInLayoutable = isInLayoutable;
return IsInPositioner; return IsInLayoutable;
} }
return NoInformationChange; return NoInformationChange;
@@ -474,7 +474,7 @@ InformationName NodeInstance::setInformation(InformationName name, const QVarian
case Transform: return setInformationTransform(information.value<QTransform>()); break; case Transform: return setInformationTransform(information.value<QTransform>()); break;
case PenWidth: return setInformationPenWith(information.toInt()); break; case PenWidth: return setInformationPenWith(information.toInt()); break;
case Position: return setInformationPosition(information.toPointF()); break; case Position: return setInformationPosition(information.toPointF()); break;
case IsInPositioner: return setInformationIsInPositioner(information.toBool()); break; case IsInLayoutable: return setInformationIsInLayoutable(information.toBool()); break;
case SceneTransform: return setInformationSceneTransform(information.value<QTransform>()); break; case SceneTransform: return setInformationSceneTransform(information.value<QTransform>()); break;
case IsResizable: return setInformationIsResizable(information.toBool()); break; case IsResizable: return setInformationIsResizable(information.toBool()); break;
case IsMovable: return setInformationIsMovable(information.toBool()); break; case IsMovable: return setInformationIsMovable(information.toBool()); break;

View File

@@ -224,9 +224,9 @@ bool QmlItemNode::instanceIsResizable() const
return nodeInstance().isResizable(); return nodeInstance().isResizable();
} }
bool QmlItemNode::instanceIsInPositioner() const bool QmlItemNode::instanceIsInLayoutable() const
{ {
return nodeInstance().isInPositioner(); return nodeInstance().isInLayoutable();
} }
bool QmlItemNode::instanceHasRotationTransform() const bool QmlItemNode::instanceHasRotationTransform() const