From 756a9ca4ca2d0bc26ad8ffd75c0a2be399eb332c Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 14 Apr 2020 18:17:41 +0200 Subject: [PATCH 01/32] QmlDesigner: Add missing updates to FormEditor Change-Id: I500c3ffd4f6801a8ae3a5eb5dab968ad3c2611ac Reviewed-by: Tim Jenssen --- .../qmldesigner/components/formeditor/formeditorview.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index 650892339a0..dceff4cfaf8 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -545,10 +545,13 @@ void FormEditorView::auxiliaryDataChanged(const ModelNode &node, const PropertyN if (isInvisible) newNode.deselectNode(); } - } else if (item.isFlowTransition() || item.isFlowItem() || item.isFlowActionArea()) { + } else if (item.isFlowTransition() || item.isFlowItem() || item.isFlowActionArea() + || item.isFlowDecision() || item.isFlowWildcard()) { FormEditorItem *editorItem = m_scene->itemForQmlItemNode(item); if (editorItem) editorItem->update(); + } else if (item.isFlowView()) { + scene()->update(); } else if (name == "annotation" || name == "customId") { if (FormEditorItem *editorItem = scene()->itemForQmlItemNode(item)) { editorItem->update(); From e4ba8327abd85f9d7dfdbfa8cd6ccbdb9dc9f050 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 20 Apr 2020 17:01:34 +0200 Subject: [PATCH 02/32] Doc: Describe setting default line endings For all projects or for the current project. Change-Id: Ie29c4ad42e62810a5c51e950b0d764e906308bda Reviewed-by: Eike Ziller --- .../images/qtcreator-editor-settings.png | Bin 70636 -> 23557 bytes .../src/editors/creator-coding-edit-mode.qdoc | 11 ++++++++++- .../creator-projects-settings-editor.qdoc | 4 +++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-editor-settings.png b/doc/qtcreator/images/qtcreator-editor-settings.png index 81b4af6a39501fb891f0d7ee0404510cb8f0274e..0c5265a6a2f78dc391c4cc92c66a3071c9ffc6f0 100644 GIT binary patch literal 23557 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 From 8b8a99cda7784d3e2b05cdf5f47a9dd2b79568e6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 8 Apr 2020 19:22:36 +0200 Subject: [PATCH 15/32] QmlDesigner: Add QmlFlowTargetNode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QmlFlowTargetNode allows to abstract different types of transition targets. Change-Id: I222992389a00237d3f51026f8b0fc8ab82da5028 Reviewed-by: Henning Gründl Reviewed-by: Tim Jenssen --- .../designercore/include/qmlitemnode.h | 17 +++- .../designercore/model/qmlitemnode.cpp | 91 +++++++++++++++++-- 2 files changed, 97 insertions(+), 11 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index 890d7deb3b5..e3d01fa03ee 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -132,6 +132,18 @@ public: class QmlFlowItemNode; class QmlFlowViewNode; +class QMLDESIGNERCORE_EXPORT QmlFlowTargetNode : public QmlItemNode +{ +public: + QmlFlowTargetNode(const ModelNode &modelNode) : QmlItemNode(modelNode) {} + bool isValid() const override; + + void assignTargetItem(const QmlFlowTargetNode &node); + void destroyTargets(); + ModelNode targetTransition() const; + QmlFlowViewNode flowView() const; +}; + class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode { public: @@ -139,7 +151,7 @@ public: bool isValid() const override; static bool isValidQmlFlowActionAreaNode(const ModelNode &modelNode); ModelNode targetTransition() const; - void assignTargetFlowItem(const QmlFlowItemNode &flowItem); + void assignTargetFlowItem(const QmlFlowTargetNode &flowItem); QmlFlowItemNode flowItemParent() const; void destroyTarget(); ModelNode decisionNodeForTransition(const ModelNode &transition) const; @@ -162,9 +174,10 @@ public: bool isValid() const override; static bool isValidQmlFlowViewNode(const ModelNode &modelNode); QList flowItems() const; - ModelNode addTransition(const QmlFlowItemNode &from, const QmlFlowItemNode &to); + ModelNode addTransition(const QmlFlowTargetNode &from, const QmlFlowTargetNode &to); const QList transitions() const; const QList wildcards() const; + const QList decicions() const; }; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 4ba478f93cf..d9379d7f066 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -577,7 +577,7 @@ ModelNode QmlFlowActionAreaNode::targetTransition() const return modelNode().bindingProperty("target").resolveToModelNode(); } -void QmlFlowActionAreaNode::assignTargetFlowItem(const QmlFlowItemNode &flowItem) +void QmlFlowActionAreaNode::assignTargetFlowItem(const QmlFlowTargetNode &flowItem) { QTC_ASSERT(isValid(), return); QTC_ASSERT(flowItem.isValid(), return); @@ -592,7 +592,8 @@ void QmlFlowActionAreaNode::assignTargetFlowItem(const QmlFlowItemNode &flowItem destroyTarget(); - ModelNode transition = flowView.addTransition(flowParent, flowItem); + ModelNode transition = flowView.addTransition(flowParent.modelNode(), + flowItem.modelNode()); modelNode().bindingProperty("target").setExpression(transition.validId()); } @@ -625,6 +626,14 @@ ModelNode QmlFlowActionAreaNode::decisionNodeForTransition(const ModelNode &tran && finalTarget.bindingProperty("targets").resolveToModelNodeList().contains(transition)) return finalTarget; } + QmlFlowViewNode flowView(view()->rootModelNode()); + if (flowView.isValid()) { + for (const ModelNode target : flowView.decicions()) { + if (target.hasBindingProperty("targets") + && target.bindingProperty("targets").resolveToModelNodeList().contains(transition)) + return target; + } + } } return {}; @@ -645,22 +654,25 @@ QList QmlFlowViewNode::flowItems() const { QList list; for (const ModelNode &node : allDirectSubModelNodes()) - if (QmlFlowItemNode::isValidQmlFlowItemNode(node)) + if (QmlFlowItemNode::isValidQmlFlowItemNode(node) + || QmlVisualNode::isFlowDecision(node) + || QmlVisualNode::isFlowWildcard(node)) list.append(node); return list; } -ModelNode QmlFlowViewNode::addTransition(const QmlFlowItemNode &from, const QmlFlowItemNode &to) +ModelNode QmlFlowViewNode::addTransition(const QmlFlowTargetNode &from, const QmlFlowTargetNode &to) { - ModelNode transition = from.view()->createModelNode("FlowView.FlowTransition", 1, 0); + ModelNode transition = view()->createModelNode("FlowView.FlowTransition", 1, 0); - from.flowView().modelNode().nodeListProperty("flowTransitions").reparentHere(transition); + nodeListProperty("flowTransitions").reparentHere(transition); - QmlFlowItemNode f = from; - QmlFlowItemNode t = to; + QmlFlowTargetNode f = from; + QmlFlowTargetNode t = to; - transition.bindingProperty("from").setExpression(f.validId()); + if (f.isValid()) + transition.bindingProperty("from").setExpression(f.validId()); transition.bindingProperty("to").setExpression(t.validId()); return transition; @@ -684,4 +696,65 @@ const QList QmlFlowViewNode::wildcards() const return {}; } +const QList QmlFlowViewNode::decicions() const +{ + if (modelNode().nodeListProperty("flowDecisions").isValid()) + return modelNode().nodeListProperty("flowDecisions").toModelNodeList(); + + return {}; +} + +bool QmlFlowTargetNode::isValid() const +{ + return QmlItemNode(modelNode()).isFlowItem() + || QmlItemNode(modelNode()).isFlowActionArea() + || QmlVisualNode::isFlowDecision(modelNode()) + || QmlVisualNode::isFlowWildcard(modelNode()); +} + +void QmlFlowTargetNode::assignTargetItem(const QmlFlowTargetNode &node) +{ + if (QmlFlowActionAreaNode::isValidQmlFlowActionAreaNode(modelNode())) { + QmlFlowActionAreaNode(modelNode()).assignTargetFlowItem(node); + } else if (isFlowWildcard()) { + destroyTargets(); + ModelNode transition = flowView().addTransition(ModelNode(), + node); + modelNode().bindingProperty("target").setExpression(transition.validId()); + } else if (isFlowDecision()) { + destroyTargets(); + } +} + +void QmlFlowTargetNode::destroyTargets() +{ + + QTC_ASSERT(isValid(), return); + + if (targetTransition().isValid()) { + QmlObjectNode(targetTransition()).destroy(); + modelNode().removeProperty("target"); + } + + if (hasBindingProperty("targets")) { + for (ModelNode &node : modelNode().bindingProperty("targets").resolveToModelNodeList()) + QmlItemNode(node).destroy(); + modelNode().removeProperty("targets"); + } + +} + +ModelNode QmlFlowTargetNode::targetTransition() const +{ + if (!modelNode().hasBindingProperty("target")) + return {}; + + return modelNode().bindingProperty("target").resolveToModelNode(); +} + +QmlFlowViewNode QmlFlowTargetNode::flowView() const +{ + return view()->rootModelNode(); +} + } //QmlDesigner From dbccc57597169246827c5ec6087ad7316c2ad4e1 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 8 Apr 2020 19:28:47 +0200 Subject: [PATCH 16/32] QmlDesigner: Support different transition targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FlowDecision and FlowWildcard can now be connected. Change-Id: Iee7f38a23ba2c12d2843996eca46ff31f66af5a4 Reviewed-by: Henning Gründl Reviewed-by: Tim Jenssen --- .../componentcore/designeractionmanager.cpp | 6 +++++- .../componentcore/modelnodeoperations.cpp | 13 +++++++------ 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp index 3687ba362d2..42f95952db1 100644 --- a/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designeractionmanager.cpp @@ -354,8 +354,12 @@ bool isFlowTransitionItem(const SelectionContext &context) bool isFlowActionItemItem(const SelectionContext &context) { + const ModelNode selectedNode = context.currentSingleSelectedNode(); + return context.singleNodeIsSelected() - && QmlFlowActionAreaNode::isValidQmlFlowActionAreaNode(context.currentSingleSelectedNode()); + && (QmlFlowActionAreaNode::isValidQmlFlowActionAreaNode(selectedNode) + || QmlVisualNode::isFlowDecision(selectedNode) + || QmlVisualNode::isFlowWildcard(selectedNode)); } bool isFlowItemOrTransition(const SelectionContext &context) diff --git a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp index c0f53f4946a..2c239a8aa94 100644 --- a/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp +++ b/src/plugins/qmldesigner/components/componentcore/modelnodeoperations.cpp @@ -1052,16 +1052,17 @@ void addTransition(const SelectionContext &selectionContext) { if (selectionContext.view()) { AbstractView *view = selectionContext.view(); - QmlFlowItemNode targetItem = selectionContext.targetNode(); - QmlFlowActionAreaNode actionArea = selectionContext.currentSingleSelectedNode(); + QmlFlowTargetNode targetNode = selectionContext.targetNode(); + QmlFlowTargetNode sourceNode = selectionContext.currentSingleSelectedNode(); + + QTC_ASSERT(targetNode.isValid(), return); + QTC_ASSERT(sourceNode.isValid(), return); - QTC_ASSERT(targetItem.isValid(), return); - QTC_ASSERT(actionArea.isValid(), return); view->executeInTransaction("DesignerActionManager:addTransition", - [view, targetItem, &actionArea](){ - actionArea.assignTargetFlowItem(targetItem); + [view, targetNode, &sourceNode](){ + sourceNode.assignTargetItem(targetNode); }); } } From 3caafb2b8194ab28c5ee9f9772abd6233aa3845d Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Apr 2020 08:06:43 +0200 Subject: [PATCH 17/32] QmlDesigner: Inspect components for existing states For each created items we retrieve a list of the names of all existing states. Task-number: QDS-1978 Change-Id: I8e85e439fce3c6204cb8bcf69f6be847cc8dae5c Reviewed-by: Tim Jenssen --- .../qml/qmlpuppet/interfaces/commondefines.h | 1 + .../qml2puppet/instances/nodeinstanceserver.cpp | 1 + .../qml2puppet/instances/objectnodeinstance.cpp | 5 +++++ .../qml2puppet/instances/objectnodeinstance.h | 1 + .../instances/quickitemnodeinstance.cpp | 14 ++++++++++++++ .../qml2puppet/instances/quickitemnodeinstance.h | 1 + .../qml2puppet/instances/servernodeinstance.cpp | 8 ++++++++ .../qml2puppet/instances/servernodeinstance.h | 1 + .../designercore/include/nodeinstance.h | 2 ++ .../designercore/instances/nodeinstance.cpp | 16 ++++++++++++++++ 10 files changed, 50 insertions(+) diff --git a/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h b/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h index eb1bd41051b..b5cf157a8cc 100644 --- a/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h +++ b/share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h @@ -34,6 +34,7 @@ enum InformationName { NoName, NoInformationChange = NoName, + AllStates, Size, BoundingRect, Transform, diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp index cfdc513c1b1..813057e10b5 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/nodeinstanceserver.cpp @@ -1061,6 +1061,7 @@ static QVector createInformationVector(const QList QuickItemNodeInstance::allItemsRecursive() const return itemList; } +QStringList QuickItemNodeInstance::allStates() const +{ + QStringList list; + + QList stateList = DesignerSupport::statesForItem(quickItem()); + for (QObject *state : stateList) { + QQmlProperty property(state, "name"); + if (property.isValid()) + list.append(property.read().toString()); + } + + return list; +} + QRectF QuickItemNodeInstance::contentItemBoundingBox() const { if (contentItem()) { diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h index 8aab24178be..f42e45a8ff5 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.h @@ -96,6 +96,7 @@ public: void doComponentComplete() override; QList allItemsRecursive() const override; + QStringList allStates() const override; protected: explicit QuickItemNodeInstance(QQuickItem*); diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp index 483cf581c18..0c9f5721a58 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.cpp @@ -661,6 +661,14 @@ QList ServerNodeInstance::stateInstances() const return m_nodeInstance->stateInstances(); } +QStringList ServerNodeInstance::allStates() const +{ + if (isValid()) + return m_nodeInstance->allStates(); + + return {}; +} + Internal::ObjectNodeInstance::Pointer ServerNodeInstance::internalInstance() const { return m_nodeInstance; diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h index c85ba9a2b85..ceb3b1e5b14 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/servernodeinstance.h @@ -164,6 +164,7 @@ public: QSharedPointer internalInstance() const; QList stateInstances() const; + QStringList allStates() const; static bool isSubclassOf(QObject *object, const QByteArray &superTypeName); diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstance.h b/src/plugins/qmldesigner/designercore/include/nodeinstance.h index 9595396ae9c..56b8141bde6 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstance.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstance.h @@ -90,6 +90,7 @@ public: bool hasAnchors() const; QString error() const; bool hasError() const; + QStringList allStateNames() const; protected: void setProperty(const PropertyName &name, const QVariant &value); @@ -117,6 +118,7 @@ protected: InformationName setInformationAnchor(const PropertyName &sourceAnchorLine, const PropertyName &targetAnchorLine, qint32 targetInstanceId); InformationName setInformationInstanceTypeForProperty(const PropertyName &property, const TypeName &type); InformationName setInformationHasBindingForProperty(const PropertyName &property, bool hasProperty); + InformationName setAllStates(const QStringList &states); void setParentId(qint32 instanceId); void setRenderPixmap(const QImage &image); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp index 15d09e45169..453c1b31a47 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstance.cpp @@ -76,6 +76,7 @@ public: QString errorMessage; QHash > anchors; + QStringList allStates; }; NodeInstance::NodeInstance() = default; @@ -169,6 +170,10 @@ bool NodeInstance::hasError() const return !d->errorMessage.isEmpty(); } +QStringList NodeInstance::allStateNames() const +{ + return d->allStates; +} bool NodeInstance::isValid() const { @@ -592,6 +597,16 @@ InformationName NodeInstance::setInformationHasBindingForProperty(const Property return NoInformationChange; } +InformationName NodeInstance::setAllStates(const QStringList &states) +{ + if (d->allStates != states) { + d->allStates = states; + return AllStates; + } + + return NoInformationChange; +} + InformationName NodeInstance::setInformation(InformationName name, const QVariant &information, const QVariant &secondInformation, const QVariant &thirdInformation) { switch (name) { @@ -614,6 +629,7 @@ InformationName NodeInstance::setInformation(InformationName name, const QVarian case Anchor: return setInformationAnchor(information.toByteArray(), secondInformation.toByteArray(), thirdInformation.value()); case InstanceTypeForProperty: return setInformationInstanceTypeForProperty(information.toByteArray(), secondInformation.toByteArray()); case HasBindingForProperty: return setInformationHasBindingForProperty(information.toByteArray(), secondInformation.toBool()); + case AllStates: return setAllStates(information.toStringList()); case NoName: default: break; } From b39edea49500831ff62f3f28c17bcca89a05dd17 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Apr 2020 08:16:40 +0200 Subject: [PATCH 18/32] QmlDesigner: Add QmlObjectNode::allStateNames() Change-Id: Icc6a7404f4437411189465cb71e8bc3543b68d23 Reviewed-by: Tim Jenssen --- src/plugins/qmldesigner/designercore/include/qmlobjectnode.h | 2 ++ src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h index 02e447aa8be..48b7c1ac007 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlobjectnode.h @@ -120,6 +120,8 @@ public: static QString generateTranslatableText(const QString& text); QString simplifiedTypeName() const; + QStringList allStateNames() const; + protected: NodeInstance nodeInstance() const; QmlObjectNode nodeForInstance(const NodeInstance &instance) const; diff --git a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp index 07ee742c847..e811ca071ea 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlobjectnode.cpp @@ -719,4 +719,9 @@ QString QmlObjectNode::simplifiedTypeName() const return modelNode().simplifiedTypeName(); } +QStringList QmlObjectNode::allStateNames() const +{ + return nodeInstance().allStateNames(); +} + } //QmlDesigner From 75e6d4402c98923d29d1c1795187aa7d149fd7d0 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Apr 2020 08:18:19 +0200 Subject: [PATCH 19/32] QmlDesigner: Expose all states to property editor Change-Id: I9b89a9f8a8ed23c18ef5421a4380e90a484ae097 Reviewed-by: Tim Jenssen --- .../propertyeditor/propertyeditorcontextobject.cpp | 9 +++++++++ .../propertyeditor/propertyeditorcontextobject.h | 6 ++++++ .../propertyeditor/propertyeditorqmlbackend.cpp | 5 +++++ 3 files changed, 20 insertions(+) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp index 0bf0503888f..8be49060e64 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.cpp @@ -347,6 +347,15 @@ void PropertyEditorContextObject::setStateName(const QString &newStateName) emit stateNameChanged(); } +void PropertyEditorContextObject::setAllStateNames(const QStringList &allStates) +{ + if (allStates == m_allStateNames) + return; + + m_allStateNames = allStates; + emit allStateNamesChanged(); +} + void PropertyEditorContextObject::setIsBaseState(bool newIsBaseState) { if (newIsBaseState == m_isBaseState) diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h index 4b74f7331bc..9e3309ee351 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorcontextobject.h @@ -46,6 +46,7 @@ class PropertyEditorContextObject : public QObject Q_PROPERTY(QString specificQmlData READ specificQmlData WRITE setSpecificQmlData NOTIFY specificQmlDataChanged) Q_PROPERTY(QString stateName READ stateName WRITE setStateName NOTIFY stateNameChanged) + Q_PROPERTY(QStringList allStateNames READ allStateNames WRITE setAllStateNames NOTIFY allStateNamesChanged) Q_PROPERTY(bool isBaseState READ isBaseState WRITE setIsBaseState NOTIFY isBaseStateChanged) Q_PROPERTY(bool selectionChanged READ selectionChanged WRITE setSelectionChanged NOTIFY selectionChangedChanged) @@ -70,6 +71,7 @@ public: QUrl specificsUrl() const {return m_specificsUrl; } QString specificQmlData() const {return m_specificQmlData; } QString stateName() const {return m_stateName; } + QStringList allStateNames() const { return m_allStateNames; } bool isBaseState() const { return m_isBaseState; } bool selectionChanged() const { return m_selectionChanged; } @@ -114,6 +116,7 @@ signals: void specificsUrlChanged(); void specificQmlDataChanged(); void stateNameChanged(); + void allStateNamesChanged(); void isBaseStateChanged(); void selectionChangedChanged(); void backendValuesChanged(); @@ -134,6 +137,8 @@ public slots: void setStateName(const QString &newStateName); + void setAllStateNames(const QStringList &allStates); + void setIsBaseState(bool newIsBaseState); void setSelectionChanged(bool newSelectionChanged); @@ -151,6 +156,7 @@ private: QString m_specificQmlData; QString m_stateName; + QStringList m_allStateNames; bool m_isBaseState; bool m_selectionChanged; diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp index 56202a2596b..d9a685c7032 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditorqmlbackend.cpp @@ -394,8 +394,13 @@ void PropertyEditorQmlBackend::setup(const QmlObjectNode &qmlObjectNode, const Q contextObject()->setStateName(stateName); if (!qmlObjectNode.isValid()) return; + context()->setContextProperty(QLatin1String("propertyCount"), QVariant(qmlObjectNode.modelNode().properties().count())); + QStringList stateNames = qmlObjectNode.allStateNames(); + stateNames.prepend("base state"); + contextObject()->setAllStateNames(stateNames); + contextObject()->setIsBaseState(qmlObjectNode.isInBaseState()); contextObject()->setHasAliasExport(qmlObjectNode.isAliasExported()); From 543efebc536c601bf9768c604b8cea356b25cead Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 15 Apr 2020 19:32:35 +0200 Subject: [PATCH 20/32] QmlDesigner: Fix updates in FormEditor Some updates when auxiliaryDataChanged were missing. Change-Id: I73146d10b80e8905f073332b727ef809bcf4a471 Reviewed-by: Tim Jenssen --- .../qmldesigner/components/formeditor/formeditorview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp index dceff4cfaf8..58b47351f98 100644 --- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp +++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp @@ -545,12 +545,12 @@ void FormEditorView::auxiliaryDataChanged(const ModelNode &node, const PropertyN if (isInvisible) newNode.deselectNode(); } - } else if (item.isFlowTransition() || item.isFlowItem() || item.isFlowActionArea() + } else if (item.isFlowTransition() || item.isFlowActionArea() || item.isFlowDecision() || item.isFlowWildcard()) { FormEditorItem *editorItem = m_scene->itemForQmlItemNode(item); if (editorItem) editorItem->update(); - } else if (item.isFlowView()) { + } else if (item.isFlowView() || item.isFlowItem()) { scene()->update(); } else if (name == "annotation" || name == "customId") { if (FormEditorItem *editorItem = scene()->itemForQmlItemNode(item)) { From 88a76df3d94742eb05734afeb81bc1bd6f8aaace Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 9 Apr 2020 16:50:19 +0200 Subject: [PATCH 21/32] QmlDesigner: Finish FlowDecision support Change-Id: Ic4e10fa442ea684890cfb79285760bc38991b494 Reviewed-by: Tim Jenssen --- .../designercore/include/qmlitemnode.h | 2 + .../designercore/model/qmlitemnode.cpp | 47 +++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index e3d01fa03ee..48e563358d2 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -142,6 +142,7 @@ public: void destroyTargets(); ModelNode targetTransition() const; QmlFlowViewNode flowView() const; + ModelNode findSourceForDecisionNode() const; }; class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode @@ -178,6 +179,7 @@ public: const QList transitions() const; const QList wildcards() const; const QList decicions() const; + QList transitionsForTarget(const ModelNode &modelNode); }; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index d9379d7f066..3f7b22e59fe 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -704,6 +704,17 @@ const QList QmlFlowViewNode::decicions() const return {}; } +QList QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNode) +{ + QList list; + for (const ModelNode &transition : transitions()) { + if (transition.hasBindingProperty("to") + && transition.bindingProperty("to").resolveToModelNode() == modelNode) + list.append(transition); + } + return list; +} + bool QmlFlowTargetNode::isValid() const { return QmlItemNode(modelNode()).isFlowItem() @@ -723,12 +734,21 @@ void QmlFlowTargetNode::assignTargetItem(const QmlFlowTargetNode &node) modelNode().bindingProperty("target").setExpression(transition.validId()); } else if (isFlowDecision()) { destroyTargets(); + ModelNode sourceNode = modelNode(); + + if (!QmlVisualNode::isFlowDecision(sourceNode)) + sourceNode = findSourceForDecisionNode(); + + if (sourceNode.isValid()) { + ModelNode transition = flowView().addTransition(sourceNode, + node); + modelNode().bindingProperty("targets").addModelNodeToArray(transition); + } } } void QmlFlowTargetNode::destroyTargets() { - QTC_ASSERT(isValid(), return); if (targetTransition().isValid()) { @@ -737,8 +757,9 @@ void QmlFlowTargetNode::destroyTargets() } if (hasBindingProperty("targets")) { - for (ModelNode &node : modelNode().bindingProperty("targets").resolveToModelNodeList()) - QmlItemNode(node).destroy(); + for (ModelNode &node : modelNode().bindingProperty("targets").resolveToModelNodeList()) { + QmlObjectNode(node).destroy(); + } modelNode().removeProperty("targets"); } @@ -757,4 +778,24 @@ QmlFlowViewNode QmlFlowTargetNode::flowView() const return view()->rootModelNode(); } +ModelNode QmlFlowTargetNode::findSourceForDecisionNode() const +{ + if (!isFlowDecision()) + return {}; + + for (const ModelNode transition : flowView().transitionsForTarget(modelNode())) { + if (transition.hasBindingProperty("from")) { + const ModelNode source = transition.bindingProperty("from").resolveToModelNode(); + if (source.isValid()) { + if (QmlVisualNode::isFlowDecision(source)) + return QmlFlowTargetNode(source).findSourceForDecisionNode(); + else if (QmlItemNode(source).isFlowItem()) + return source; + } + } + } + + return {}; +} + } //QmlDesigner From 8262fdf5f993a5680e4138f55f28f498f6aa4dd5 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 15 Apr 2020 19:28:49 +0200 Subject: [PATCH 22/32] QmlDesigner: Fix QmlFlowTargetNode::assignTargetItem FlowDecision can have multiple targets. No reason to delete existing ones. Change-Id: Ifdc42234c132ce5e0e212e1b3803a7ddcc25c27d Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 3f7b22e59fe..6943ba4a5a7 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -733,7 +733,6 @@ void QmlFlowTargetNode::assignTargetItem(const QmlFlowTargetNode &node) node); modelNode().bindingProperty("target").setExpression(transition.validId()); } else if (isFlowDecision()) { - destroyTargets(); ModelNode sourceNode = modelNode(); if (!QmlVisualNode::isFlowDecision(sourceNode)) From 6b6b844020e93af947ee871683a970ef3830aeb4 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 14 Apr 2020 18:16:40 +0200 Subject: [PATCH 23/32] QmlDesigner: Add QmlFlowTargetNode::isFlowEditorTarget() Change-Id: Ieacd59baa5b99bed4def6001de88c43545d0e309 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/include/qmlitemnode.h | 1 + .../qmldesigner/designercore/model/qmlitemnode.cpp | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index 48e563358d2..c9fa5ea3b8b 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -143,6 +143,7 @@ public: ModelNode targetTransition() const; QmlFlowViewNode flowView() const; ModelNode findSourceForDecisionNode() const; + static bool isFlowEditorTarget(const ModelNode &modelNode); }; class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 6943ba4a5a7..65f719a5ac9 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -717,10 +717,7 @@ QList QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNod bool QmlFlowTargetNode::isValid() const { - return QmlItemNode(modelNode()).isFlowItem() - || QmlItemNode(modelNode()).isFlowActionArea() - || QmlVisualNode::isFlowDecision(modelNode()) - || QmlVisualNode::isFlowWildcard(modelNode()); + return isFlowEditorTarget(modelNode()); } void QmlFlowTargetNode::assignTargetItem(const QmlFlowTargetNode &node) @@ -797,4 +794,12 @@ ModelNode QmlFlowTargetNode::findSourceForDecisionNode() const return {}; } +bool QmlFlowTargetNode::isFlowEditorTarget(const ModelNode &modelNode) +{ + return QmlItemNode(modelNode).isFlowItem() + || QmlItemNode(modelNode).isFlowActionArea() + || QmlVisualNode::isFlowDecision(modelNode) + || QmlVisualNode::isFlowWildcard(modelNode); +} + } //QmlDesigner From 38bfdd86e353e87fd6b8f589b16a3dd62c7af2a9 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Wed, 15 Apr 2020 19:28:03 +0200 Subject: [PATCH 24/32] QmlDesigner: Add helper functions to remove transitions Change-Id: I33c972f9080b5c344e07c3f910e0a36fa981063b Reviewed-by: Tim Jenssen --- .../designercore/include/qmlitemnode.h | 3 ++ .../designercore/model/qmlitemnode.cpp | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h index c9fa5ea3b8b..ef8f1b28ba2 100644 --- a/src/plugins/qmldesigner/designercore/include/qmlitemnode.h +++ b/src/plugins/qmldesigner/designercore/include/qmlitemnode.h @@ -144,6 +144,7 @@ public: QmlFlowViewNode flowView() const; ModelNode findSourceForDecisionNode() const; static bool isFlowEditorTarget(const ModelNode &modelNode); + void removeTransitions(); }; class QMLDESIGNERCORE_EXPORT QmlFlowActionAreaNode : public QmlItemNode @@ -181,6 +182,8 @@ public: const QList wildcards() const; const QList decicions() const; QList transitionsForTarget(const ModelNode &modelNode); + void removeDanglingTransitions(); + void removeAllTransitions(); }; diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index 65f719a5ac9..d2c312dd272 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -715,6 +715,14 @@ QList QmlFlowViewNode::transitionsForTarget(const ModelNode &modelNod return list; } +void QmlFlowViewNode::removeDanglingTransitions() +{ + for (const ModelNode &transition : transitions()) { + if (!transition.hasBindingProperty("to")) + QmlObjectNode(transition).destroy(); + } +} + bool QmlFlowTargetNode::isValid() const { return isFlowEditorTarget(modelNode()); @@ -802,4 +810,24 @@ bool QmlFlowTargetNode::isFlowEditorTarget(const ModelNode &modelNode) || QmlVisualNode::isFlowWildcard(modelNode); } +void QmlFlowTargetNode::removeTransitions() +{ + if (!modelNode().hasId()) + return; + + for (const BindingProperty &property : BindingProperty::findAllReferencesTo(modelNode())) { + if (property.isValid() && QmlVisualNode::isFlowTransition(property.parentModelNode())) + QmlObjectNode(property.parentModelNode()).destroy(); + } +} + +void QmlFlowViewNode::removeAllTransitions() +{ + if (!isValid()) + return; + + if (hasProperty("flowTransitions")) + removeProperty("flowTransitions"); +} + } //QmlDesigner From 10fece1795e61d0102823e2a64426bbd0e178c4a Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 21 Apr 2020 08:17:16 +0200 Subject: [PATCH 25/32] QmlDesigner: Fix QmlFlowTargetNode::assignTargetItem() The condition was simply wrong. Change-Id: I3229be91636de6d4bd6a8665b16ece2ed670ec73 Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp index d2c312dd272..098f8317a5d 100644 --- a/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp +++ b/src/plugins/qmldesigner/designercore/model/qmlitemnode.cpp @@ -740,8 +740,8 @@ void QmlFlowTargetNode::assignTargetItem(const QmlFlowTargetNode &node) } else if (isFlowDecision()) { ModelNode sourceNode = modelNode(); - if (!QmlVisualNode::isFlowDecision(sourceNode)) - sourceNode = findSourceForDecisionNode(); + if (QmlVisualNode::isFlowDecision(sourceNode)) + sourceNode = findSourceForDecisionNode(); if (sourceNode.isValid()) { ModelNode transition = flowView().addTransition(sourceNode, From f21f7e97fcc7e04ca50693ca992bd425a9489dbb Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 21 Apr 2020 16:18:10 +0200 Subject: [PATCH 26/32] Doc: Move information about using Form Editor to separate topic Rewrite information about the Qt Quick Editor to take new workspace concept and 3D editor into account. Task-number: QTCREATORBUG-23364 Change-Id: I053685b5e603ad75af3f7314c30e627fac5c6207 Reviewed-by: Thomas Hartmann --- .../images/qmldesigner-visual-editor.png | Bin 54779 -> 0 bytes doc/qtcreator/src/qtcreator-toc.qdoc | 2 + .../creator-only/qtquick-app-development.qdoc | 5 +- .../src/qtquick/qtquick-annotations.qdoc | 2 +- .../src/qtquick/qtquick-buttons.qdoc | 2 +- .../src/qtquick/qtquick-components.qdoc | 11 +- .../src/qtquick/qtquick-designer.qdoc | 158 +++++------------- .../src/qtquick/qtquick-form-editor.qdoc | 110 ++++++++++++ .../src/qtdesignstudio-toc.qdoc | 3 +- 9 files changed, 163 insertions(+), 130 deletions(-) delete mode 100644 doc/qtcreator/images/qmldesigner-visual-editor.png create mode 100644 doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc diff --git a/doc/qtcreator/images/qmldesigner-visual-editor.png b/doc/qtcreator/images/qmldesigner-visual-editor.png deleted file mode 100644 index 92683ad024084351d8ad724872f8e473b79d1416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54779 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 \uicontrol Views: \list + \li \uicontrol {Form Editor} (1) provides a canvas for designing 2D UIs. + For more information, see \l {Editing 2D Content}. - \li \uicontrol Canvas (1) is the working area where you create QML - components and design applications. In the \uicontrol {Form Editor} - tab, you can use a visual editor to design UIs, and in the - \uicontrol {Text Editor} tab, you can use a code editor to edit the - QML code generated by the visual editor. + \li \uicontrol {3D Editor} provides an editor for files you created + using 3D graphics applications and stored in one of the supported + formats. For more information, see \l{Editing 3D Scenes}. - \li Use the sidebars to select QML types to use in the project, to - specify properties for them, and to - view them in a tree structure, as well as to create connections - and browse projects and files. You can select the content of the - sidebars in the sidebar menu: + \li \uicontrol {Text Editor} provides a code editor for editing the QML + code generated by the visual editors. For more information, see + \l {Working in Edit Mode}. - \list + \li \uicontrol {Library} (2) displays the building blocks that you + can use to design applications: predefined QML types, your own + QML components, or Qt Quick Controls that you import to the + project, and other resources. For more information, see + \l {Creating Components}. - \li \uicontrol {Library} (2) displays the building blocks that you - can use to design applications: predefined QML types, your own - QML components, or Qt Quick Controls that you import to the - project, and other resources. For more information, see - \l {Creating Components}. + \li \uicontrol {Navigator} (3) displays the items in the current QML + file as a tree structure. For more information, see + \l {Managing Item Hierarchy}. - \li \uicontrol {Navigator} (3) displays the items in the current QML - file as a tree structure. For more information, see - \l {Managing Item Hierarchy}. + \li \uicontrol {Properties} (4) organizes the properties of the + selected component. You can change the properties also in the + \uicontrol {Text Editor}. For more information, see + \l {Specifying Item Properties}. - \li \uicontrol {Properties} (4) organizes the properties of the - selected item. You can change the properties also in the - \uicontrol {Text Editor}. For more information, see - \l {Specifying Item Properties}. + \li \uicontrol Connections (5) enables you to create connections + between objects, signals, and object properties. For more + information, see \l{Adding Connections}. - \li \uicontrol Connections (5) enables you to create connections - between objects, signals, and object properties. For more - information, see \l{Adding Connections}. + \li \uicontrol {File System} shows all files in the currently + selected directory. For more information, see + \l{Viewing the File System}. - \li \uicontrol {File System} shows all files in the currently - selected directory. For more information, see - \l{Viewing the File System}. + \li \uicontrol {Open Documents} shows currently open files. - \li \uicontrol {Open Documents} shows currently open files. + \li \uicontrol {Projects} shows a list of projects open in the + current session. For more information, see + \l{Viewing Project Files}. - \li \uicontrol {Projects} shows a list of projects open in the - current session. For more information, see - \l{Viewing Project Files}. - - \endlist - - \li \uicontrol {States} view (6) displays the different states of the item. + \li \uicontrol {States} (6) displays the different states of the item. QML states typically describe user interface configurations, such as the UI controls, their properties and behavior and the available actions. For more information, see \l{Adding States}. - \if defined(qtdesignstudio) - \li \uicontrol Timeline view (7) provides a timeline and keyframe based + \li \uicontrol Timeline (7) provides a timeline and keyframe based editor that enables you to animate the properties of UI components. - \endif + For more information, see \l{Creating Animations}. \endlist - \section1 Snapping to Parent and Sibling Items - - You design applications on the canvas by placing items on it. - - When you are working on a design, you can use snapping to align - items on the canvas. Click the \inlineimage snapping.png - button to have the items snap to their parent or sibling items. Snapping - lines automatically appear to help you position the items. - Click the \inlineimage snapping_and_anchoring.png - button to anchor the item to the items that you snap to. - - Choose \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} > - \uicontrol {\QMLD} to specify settings for snapping. In the - \uicontrol {Parent item padding} field, specify the - distance in pixels between the parent item and the snapping lines. In the - \uicontrol {Sibling item spacing} field, specify the distance in pixels between - sibling items and the snapping lines. - - The following image shows the snapping lines (1) when - \uicontrol {Parent item padding} is set to 5 pixels. - - \image qmldesigner-snap-margins.png "Snapping lines on canvas" - - \section1 Hiding Item Boundaries - - The Design mode displays the boundaries of items on the canvas. To hide - the boundaries, click the \inlineimage boundingrect.png - button. - - \section1 Selecting Items - - When you point the mouse to overlapping items, the frontmost item is - selected by default. However, items that do not have any content, such as - the mouse area, are typically located in front of items that do have - content, such as rectangles or border images. To select items with content - by default, click the - \inlineimage qmldesigner-only-select-items-with-content.png - button. - - \section1 Previewing Component Size - - The width and height of the root item in a QML file determine the size of - the component. You can reuse components, such as buttons, in different - sizes in other QML files and design UIs for use with different device - profiles, screen resolution, or screen orientation. The component size - might also be zero (0,0) if its final size is determined by property - bindings. - - To experiment with different component sizes, enter values in the - \uicontrol {Override Width} and \uicontrol {Override Height} fields (1) on - the canvas toolbar. The changes are displayed on the canvas (2) - and in the \uicontrol States view (3), but the property - values are not changed permanently in the QML file. You can permanently - change the property values in the \uicontrol Properties view (4). - - \image qmldesigner-preview-size.png "Canvas width and height" - - \section1 Specifying Canvas Size - - To change the canvas size, select \uicontrol Tools > \uicontrol Options > - \uicontrol {Qt Quick} > \uicontrol {\QMLD} and - specify the canvas width and height in the \uicontrol Canvas group. - - \section1 Refreshing the Canvas - - When you open QML files in the Design mode, the items in the file are drawn - on the canvas. When you edit the item properties, the QML file and - the image on the canvas might get out of sync. For example, when you change - the position of an item within a column or a row, the new position might - not be displayed correctly on the canvas. - - To refresh the image on the canvas, press \key R or select the - \inlineimage reset.png - (\uicontrol {Reset View}) button. + You can move the views anywhere on the screen and save them as + \e workspaces, as instructed in \l {Managing Workspaces}. */ diff --git a/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc b/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc new file mode 100644 index 00000000000..37a31cc4be9 --- /dev/null +++ b/doc/qtcreator/src/qtquick/qtquick-form-editor.qdoc @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Creator documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + \contentspage index.html + \page qtquick-form-editor.html + \previouspage quick-components.html + \nextpage quick-buttons.html + + \title Editing 2D Content + + You design applications in the \uicontrol {Form Editor} by placing items + into it. + + \section1 Snapping to Parent and Sibling Items + + When you are working on a design, you can use snapping to align + items in the \uicontrol {Form Editor}. Click the \inlineimage snapping.png + button to have the items snap to their parent or sibling items. Snapping + lines automatically appear to help you position the items. + Click the \inlineimage snapping_and_anchoring.png + button to anchor the item to the items that you snap to. + + Choose \uicontrol Tools > \uicontrol Options > \uicontrol {Qt Quick} > + \uicontrol {\QMLD} to specify settings for snapping. In the + \uicontrol {Parent item padding} field, specify the + distance in pixels between the parent item and the snapping lines. In the + \uicontrol {Sibling item spacing} field, specify the distance in pixels between + sibling items and the snapping lines. + + The following image shows the snapping lines (1) when + \uicontrol {Parent item padding} is set to 5 pixels. + + \image qmldesigner-snap-margins.png "Snapping lines on canvas" + + \section1 Hiding Item Boundaries + + The \uicontrol {Form Editor} displays the boundaries of items. + To hide them, select the \inlineimage boundingrect.png + button. + + \section1 Selecting Items + + When you point the mouse to overlapping items, the frontmost item is + selected by default. However, items that do not have any content, such as + the mouse area, are typically located in front of items that do have + content, such as rectangles or border images. To select items with content + by default, click the + \inlineimage qmldesigner-only-select-items-with-content.png + button. + + \section1 Previewing Component Size + + The width and height of the root item in a QML file determine the size of + the component. You can reuse components, such as buttons, in different + sizes in other QML files and design UIs for use with different device + profiles, screen resolution, or screen orientation. The component size + might also be zero (0,0) if its final size is determined by property + bindings. + + To experiment with different component sizes, enter values in the + \uicontrol {Override Width} and \uicontrol {Override Height} fields (1) on + the canvas toolbar. The changes are displayed in the \uicontrol {Form Editor} + (2) and in the \uicontrol States view (3), but the property + values are not changed permanently in the QML file. You can permanently + change the property values in the \uicontrol Properties view (4). + + \image qmldesigner-preview-size.png "Canvas width and height" + + \section1 Specifying Canvas Size + + To change the canvas size, select \uicontrol Tools > \uicontrol Options > + \uicontrol {Qt Quick} > \uicontrol {\QMLD} and + specify the canvas width and height in the \uicontrol Canvas group. + + \section1 Refreshing the Form Editor Contents + + When you open QML files in the Design mode, the items in the file are drawn + in the \uicontrol {Form Editor}. When you edit the item properties, the QML + file and the contents of the editor might get out of sync. For example, when + you change the position of an item within a column or a row, the new + position might not be displayed correctly in the \uicontrol {Form Editor}. + + To refresh the contents of the \uicontrol {Form Editor}, press \key R or + select the \inlineimage reset.png + (\uicontrol {Reset View}) button. + +*/ diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index a578d73c32a..b5b7d372e0f 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Design Studio documentation. @@ -70,6 +70,7 @@ \list \li \l{Creating Components} \list + \li \l{Editing 2D Content} \li \l{Creating Buttons} \li \l{Creating Scalable Buttons and Borders} \endlist From 677fdb78c1c503d325df0a2e9bd0cfba309d131d Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 21 Apr 2020 15:50:28 +0200 Subject: [PATCH 27/32] Doc: Fix references to projects-related UI strings We now have a "Projects mode" and "Projects view", but "Build & Run" options category. Change-Id: I5bf1829cb3f9bd47bbbf06c5898e3efd417cb796 Reviewed-by: Christian Kandeler --- doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc | 2 +- .../overview/creator-only/creator-deployment-overview.qdoc | 4 ++-- doc/qtcreator/src/projects/creator-projects-running.qdoc | 7 ++++--- .../src/qtquick/qtquick-live-preview-desktop.qdoc | 3 +-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc index 19dae2d72ed..7aac8fc0a95 100644 --- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc @@ -213,7 +213,7 @@ \b {How can I make use of my multi-core CPU with \QC?} - On Linux and \macos, go to \uicontrol Project mode, select your configuration + On Linux and \macos, go to \uicontrol Projects mode, select your configuration in the \uicontrol {Build Settings}, locate the \uicontrol {Build Steps}, and add the following value, where \c{} is the amount of cores in your CPU: \c{-j } diff --git a/doc/qtcreator/src/overview/creator-only/creator-deployment-overview.qdoc b/doc/qtcreator/src/overview/creator-only/creator-deployment-overview.qdoc index 73355915804..a8216d313e3 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-deployment-overview.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-deployment-overview.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -37,7 +37,7 @@ \title Deploying to Devices - Deploy configurations in the \uicontrol Project mode + Deploy configurations in the \uicontrol Projects mode \uicontrol {Run Settings} handle the packaging of the application as an executable and copying it to a location you want to run the executable at. The files can be copied to a location in the file system of the development diff --git a/doc/qtcreator/src/projects/creator-projects-running.qdoc b/doc/qtcreator/src/projects/creator-projects-running.qdoc index 85cb0b287c1..b8cb227527a 100644 --- a/doc/qtcreator/src/projects/creator-projects-running.qdoc +++ b/doc/qtcreator/src/projects/creator-projects-running.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -48,8 +48,9 @@ To run executable files without deploying them first, select \uicontrol Build > \uicontrol {Run Without Deployment}. To make this the default option, deselect the - \uicontrol Tools > \uicontrol Options > \uicontrol Project > - \uicontrol {Always deploy project before running it} option. + \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > + \uicontrol General > \uicontrol {Always deploy project before running it} + check box. To run applications: diff --git a/doc/qtcreator/src/qtquick/qtquick-live-preview-desktop.qdoc b/doc/qtcreator/src/qtquick/qtquick-live-preview-desktop.qdoc index 7b8066e4a31..ad6f61b4d0f 100644 --- a/doc/qtcreator/src/qtquick/qtquick-live-preview-desktop.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-live-preview-desktop.qdoc @@ -47,8 +47,7 @@ \endif To preview any QML file that belongs to the project, right-click the project - name in the \uicontrol Project tab in the \uicontrol Navigator, and select - \uicontrol {Preview file}. + name in the \uicontrol Projects view, and select \uicontrol {Preview file}. To preview the whole UI, select \uicontrol {Show Live Preview} when viewing the main QML UI file of the project. From f4c9c8e07a7d8172b807890ee5f673cce59eadcb Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 20 Apr 2020 11:26:35 +0200 Subject: [PATCH 28/32] QtSupport: Work around OpenBSD's idiosyncratic naming scheme Fixes: QTCREATORBUG-23818 Change-Id: I0b2ec8621224dbfbe1a1e2c5990a9c168573dc8e Reviewed-by: Christian Stenger --- src/plugins/qtsupport/baseqtversion.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 7c1a3c241d4..67cc6b8699b 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -2034,6 +2034,9 @@ FilePaths BaseQtVersionPrivate::qtCorePaths() else if (file.endsWith(".dll") || file.endsWith(QString::fromLatin1(".so.") + versionString) || file.endsWith(".so") +#if defined(Q_OS_OPENBSD) + || file.contains(QRegularExpression("\\.so\\.[0-9]+\\.[0-9]+$")) // QTCREATORBUG-23818 +#endif || file.endsWith(QLatin1Char('.') + versionString + ".dylib")) dynamicLibs.append(FilePath::fromFileInfo(info)); } From 4df0e1f4af6aee7b726493d19d5fae551a006bd6 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 22 Apr 2020 16:03:39 +0200 Subject: [PATCH 29/32] Doc: Add missing dot Change-Id: I20c6f4709eea0e9e7cbf04401b4499d403deaedb Reviewed-by: Leena Miettinen --- doc/qtcreator/src/qtquick/qtquick-components.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/qtcreator/src/qtquick/qtquick-components.qdoc b/doc/qtcreator/src/qtquick/qtquick-components.qdoc index 15124c30499..f5bf4b1cb43 100644 --- a/doc/qtcreator/src/qtquick/qtquick-components.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-components.qdoc @@ -64,7 +64,7 @@ The \uicontrol {Qt Quick Application} wizards for a particular platform add the import statements automatically. You can remove import statements in - \uicontrol {QML Imports} + \uicontrol {QML Imports}. \uicontrol {Assets} displays the images and other files that you copy to the project folder (to the same subfolder as the QML files). From 252a0431d126ea85a83b67ae266f2d3387d8bd0b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 21 Apr 2020 11:33:59 +0200 Subject: [PATCH 30/32] Debugger: Fix dumper for std::unique_ptr with custom deleter Task-number: QTCREATORBUG-23885 Change-Id: Ifba6ef7233886d1c9341e7912d6924cd9afbc4eb Reviewed-by: Christian Stenger --- share/qtcreator/debugger/stdtypes.py | 5 ++++- tests/auto/debugger/tst_dumpers.cpp | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/debugger/stdtypes.py b/share/qtcreator/debugger/stdtypes.py index c6693f70b69..b08b9d603de 100644 --- a/share/qtcreator/debugger/stdtypes.py +++ b/share/qtcreator/debugger/stdtypes.py @@ -800,7 +800,10 @@ def qdump__std____1__shared_ptr(d, value): def qdump__std__unique_ptr(d, value): - p = d.extractPointer(value) + if value.type.size() == d.ptrSize(): + p = d.extractPointer(value) + else: + _, p = value.split("pp"); # For custom deleters. if p == 0: d.putValue("(null)") d.putNumChild(0) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 684c076ff27..9bbd10b2669 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -4706,14 +4706,19 @@ void tst_Dumpers::dumper_data() QTest::newRow("StdUniquePtr") << Data("#include \n" - "#include \n" + fooData, + "#include \n" + fooData + + + "static Foo *alloc_foo() { return new Foo; }\n" + "static void free_foo(Foo *f) { delete f; }\n", "std::unique_ptr p0;\n\n" "std::unique_ptr p1(new int(32));\n\n" "std::unique_ptr p2(new Foo);\n\n" - "std::unique_ptr p3(new std::string(\"ABC\"));", + "std::unique_ptr p3(new std::string(\"ABC\"));\n" - "&p0, &p1, &p2, &p3") + "std::unique_ptr p4{alloc_foo(), free_foo};", + + "&p0, &p1, &p2, &p3, &p4") + CoreProfile() + Cxx11Profile() @@ -4722,7 +4727,8 @@ void tst_Dumpers::dumper_data() + Check("p0", "(null)", "std::unique_ptr >") + Check("p1", "32", "std::unique_ptr >") + Check("p2", Pointer(), "std::unique_ptr >") - + Check("p3", "\"ABC\"", "std::unique_ptr >"); + + Check("p3", "\"ABC\"", "std::unique_ptr >") + + Check("p4.b", "2", "int"); QTest::newRow("StdOnce") From 7bf3024a566cd27ada873877cfe50f110736296f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 22 Apr 2020 16:06:49 +0200 Subject: [PATCH 31/32] Doc: Update info about the Timeline view and curve editors - Remove information about enabling the Timeline view, because it is now enabled by default - Update the screenshot to show the animation curve editor icon - Show information about previewing, which is now enabled - Fix UI text for the animation curve editor Change-Id: I288b45f521945aadf76475871f422ccb41cd1ac1 Reviewed-by: Thomas Hartmann --- doc/qtcreator/images/studio-timeline.png | Bin 26259 -> 13712 bytes .../src/qtquick/qtquick-components.qdoc | 2 + .../src/qtquick/qtquick-timeline.qdoc | 38 +++++++----------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/doc/qtcreator/images/studio-timeline.png b/doc/qtcreator/images/studio-timeline.png index e5743e068bde759a1482d6de7692477290ed8688..49557eeaaed8102c0c8c46a5de997d903e7ff47d 100644 GIT binary patch literal 13712 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 \uicontrol Options > \uicontrol {Qt Quick} > - \uicontrol {Qt Quick Designer} > \uicontrol {Enable Timeline editor}. - Select \uicontrol {Restart Now} to restart \QC with the \uicontrol Timeline - view visible. - To be able to create timelines, you also need the \l {Qt Quick Timeline} - module, which is delivered with Qt 5.14, and later. For more - information about adding the module to an older Qt version, see + add-on module, which you can install with Qt 5.14, and later. For more + information about adding the module to an older Qt version, see \l{Adding Qt Quick Timeline Module to Qt Installations}. \endif @@ -77,9 +69,7 @@ \list 1 \li In the \uicontrol Navigator, select the item to animate. - \li Select the \uicontrol Timeline tab to open the \uicontrol Timeline - view. - \li Select the \inlineimage plus.png + \li In the \uicontrol Timeline view, select the \inlineimage plus.png (\uicontrol {Add Timeline (A)}) button, or press \key {A} to specify settings for the timeline and running the animation in the \uicontrol {Timeline Settings} dialog. @@ -144,7 +134,7 @@ \section1 Managing Keyframes To animate components in the \uicontrol Timeline view, move to a frame - on the timeline and specify changes in the values of a property. \QDS + on the timeline and specify changes in the values of a property. \QC automatically adds keyframes between two keyframes, and sets their values evenly to create an appearance of movement or transformation. @@ -160,7 +150,8 @@ \li Select the \uicontrol {To Start (Home)}, \uicontrol {Previous (,)}, or \uicontrol {Next (.)} buttons (3), or use the keyboard shortcuts to move to the first, previous, or next frame on the timeline. - \li Enter the number of a frame in the field (4) to move to that frame. + \li Enter the number of a frame in the current keyframe field (4) to + move to that frame. \li Select the \uicontrol Previous and \uicontrol Next buttons next to a property name on the timeline (5) to move to the previous or next keyframe for that property. @@ -231,13 +222,11 @@ You can view the animation on the canvas by moving the playhead along the timeline. - \if defined(qtdesignstudio) To preview the animation, select the \uicontrol {Play (Space)} button or press \key Space. To preview the whole UI, select the \inlineimage live_preview.png (\uicontrol {Show Live Preview}) button on the canvas toolbar or press \key {Alt+P}. - \endif \section1 Editing Easing Curves @@ -247,7 +236,7 @@ timeline are \e linear, which means that they move from the beginning to the end at a constant speed. You can use the \uicontrol {Easing Curve Editor} to edit the easing curve between two keyframes. You can also use the more - advanced \uicontrol {Curve Editor (C)} to edit the curves for the whole + advanced \uicontrol {Animation Curve Editor} to edit the curves for the whole animation. \section2 Attaching Easing Curves to Keyframes @@ -306,23 +295,24 @@ \section1 Editing Animation Curves - In the curve editor, you can view and modify the whole animation curve. You + In the animation curve editor, you can view and modify the whole animation + curve. You can insert keyframes to the curve and drag them and the point handlers to modify the curve. You can modify the appearance of the curve in the style editor. You can also edit easing curves that you added with the easing curve editor. - \image studio-curve-editor.png "Curve Editor" + \image studio-curve-editor.png "Animation Curve Editor" To edit animation curves: \list 1 \li In the \uicontrol Timeline view, insert at least one keyframe. \li Select \inlineimage curveGraphIcon.png - (\uicontrol {Curve Editor (C)} on the toolbar or press \key C - to open the curve editor. - \li Right-click in the curve editor, and select + (\uicontrol {Animation Curve Editor}) on the toolbar or press \key C + to open the animation curve editor. + \li Right-click in the animation curve editor, and select \uicontrol {Insert Keyframe} to add a keyframe. \li Select keyframes to display the easing curves attached to them. To select multiple keyframes, press and hold \key Ctrl. From 2e4ed0696ba3aba95d189c7de80853c8a1f53aca Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 22 Apr 2020 17:25:41 +0200 Subject: [PATCH 32/32] CompilationDbProjectManager: Do not canonicalize file paths In particular, we do not want to follow symbolic links, but see the file names as they appear in the project file. Fixes: QTCREATORBUG-23511 Change-Id: Ibf83ac143933fa0c9568dd4e3c0be825d8ba8f0b Reviewed-by: hjk Reviewed-by: Eike Ziller --- .../compilationdatabaseprojectmanager/compilationdbparser.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp index 1505dffa1a7..7b498ab957d 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdbparser.cpp @@ -170,7 +170,7 @@ static FilePath jsonObjectFilename(const QJsonObject &object) const QString workingDir = QDir::fromNativeSeparators(object["directory"].toString()); FilePath fileName = FilePath::fromString(QDir::fromNativeSeparators(object["file"].toString())); if (fileName.toFileInfo().isRelative()) - fileName = FilePath::fromString(workingDir + "/" + fileName.toString()).canonicalPath(); + fileName = FilePath::fromString(QDir::cleanPath(workingDir + "/" + fileName.toString())); return fileName; }