QmlDesigner: Use QmlObjectNode in QmlModelNodeProxy

Selected nodes in the property editor do not have to be items.

Change-Id: I0d4fff7f3069640ceb1c17f3d755abb340575667
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Thomas Hartmann
2019-09-05 15:24:51 +02:00
parent 9ca9a7e4a6
commit 6e6ee2e9cb
3 changed files with 15 additions and 15 deletions

View File

@@ -49,7 +49,7 @@ void FileResourcesModel::setModelNodeBackend(const QVariant &modelNodeBackend)
qobject_cast<const QmlDesigner::QmlModelNodeProxy *>(modelNodeBackendObject);
if (backendObjectCasted)
m_path = backendObjectCasted->qmlItemNode().modelNode().model()->fileUrl();
m_path = backendObjectCasted->qmlObjectNode().modelNode().model()->fileUrl();
setupModel();
emit modelNodeBackendChanged();

View File

@@ -35,9 +35,9 @@ QmlModelNodeProxy::QmlModelNodeProxy(QObject *parent) :
{
}
void QmlModelNodeProxy::setup(const QmlItemNode &itemNode)
void QmlModelNodeProxy::setup(const QmlObjectNode &objectNode)
{
m_qmlItemNode = itemNode;
m_qmlObjectNode = objectNode;
emit modelNodeChanged();
}
@@ -57,44 +57,44 @@ void QmlModelNodeProxy::emitSelectionChanged()
emit selectionChanged();
}
QmlItemNode QmlModelNodeProxy::qmlItemNode() const
QmlObjectNode QmlModelNodeProxy::qmlObjectNode() const
{
return m_qmlItemNode;
return m_qmlObjectNode;
}
ModelNode QmlModelNodeProxy::modelNode() const
{
return m_qmlItemNode.modelNode();
return m_qmlObjectNode.modelNode();
}
bool QmlModelNodeProxy::multiSelection() const
{
if (!m_qmlItemNode.isValid())
if (!m_qmlObjectNode.isValid())
return false;
return m_qmlItemNode.view()->selectedModelNodes().count() > 1;
return m_qmlObjectNode.view()->selectedModelNodes().count() > 1;
}
QString QmlModelNodeProxy::nodeId() const
{
if (!m_qmlItemNode.isValid())
if (!m_qmlObjectNode.isValid())
return {};
if (multiSelection())
return tr("multiselection");
return m_qmlItemNode.id();
return m_qmlObjectNode.id();
}
QString QmlModelNodeProxy::simplifiedTypeName() const
{
if (!m_qmlItemNode.isValid())
if (!m_qmlObjectNode.isValid())
return {};
if (multiSelection())
return tr("multiselection");
return m_qmlItemNode.simplifiedTypeName();
return m_qmlObjectNode.simplifiedTypeName();
}
}

View File

@@ -41,14 +41,14 @@ class QmlModelNodeProxy : public QObject
public:
explicit QmlModelNodeProxy(QObject *parent = nullptr);
void setup(const QmlItemNode &itemNode);
void setup(const QmlObjectNode &objectNode);
static void registerDeclarativeType();
void emitSelectionToBeChanged();
void emitSelectionChanged();
QmlItemNode qmlItemNode() const;
QmlObjectNode qmlObjectNode() const;
ModelNode modelNode() const;
@@ -64,7 +64,7 @@ signals:
void selectionChanged();
private:
QmlItemNode m_qmlItemNode;
QmlObjectNode m_qmlObjectNode;
};
} //QmlDesigner