diff --git a/src/plugins/qmldesigner/libs/designercore/include/bindingproperty.h b/src/plugins/qmldesigner/libs/designercore/include/bindingproperty.h index f33ebb6af8d..660307dc054 100644 --- a/src/plugins/qmldesigner/libs/designercore/include/bindingproperty.h +++ b/src/plugins/qmldesigner/libs/designercore/include/bindingproperty.h @@ -49,7 +49,7 @@ public: {} private: - ModelNode resolveBinding(const QString &binding, ModelNode currentNode) const; + ModelNode resolveBinding(QStringView binding, ModelNode currentNode) const; }; using BindingProperties = QList; diff --git a/src/plugins/qmldesigner/libs/designercore/model/bindingproperty.cpp b/src/plugins/qmldesigner/libs/designercore/model/bindingproperty.cpp index ec073baab6f..ea19c0b2a9b 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/bindingproperty.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/bindingproperty.cpp @@ -68,12 +68,12 @@ const QString &BindingProperty::expression() const return null; } -ModelNode BindingProperty::resolveBinding(const QString &binding, ModelNode currentNode) const +ModelNode BindingProperty::resolveBinding(QStringView binding, ModelNode currentNode) const { int index = 0; - QString element = binding.split(QLatin1Char('.')).at(0); - while (!element.isEmpty()) - { + auto elements = binding.split(QLatin1Char('.')); + QStringView element = elements.front(); + while (!element.isEmpty()) { if (currentNode.isValid()) { if (element == QLatin1String("parent")) { if (currentNode.hasParentProperty()) @@ -90,10 +90,10 @@ ModelNode BindingProperty::resolveBinding(const QString &binding, ModelNode curr currentNode = ModelNode(privateModel()->nodeForId(element), model(), view()); } index++; - if (index < binding.split(QLatin1Char('.')).size()) - element = binding.split(QLatin1Char('.')).at(index); + if (std::cmp_less(index, elements.size())) + element = elements[index]; else - element.clear(); + element = {}; } else { return ModelNode(); diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index 252617f1b37..0bb7621ac2b 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -1606,12 +1606,12 @@ InternalNodePointer ModelPrivate::currentTimelineNode() const return m_currentTimelineNode; } -InternalNodePointer ModelPrivate::nodeForId(const QString &id) const +InternalNodePointer ModelPrivate::nodeForId(QStringView id) const { return m_idNodeHash.value(id); } -bool ModelPrivate::hasId(const QString &id) const +bool ModelPrivate::hasId(QStringView id) const { return m_idNodeHash.contains(id); } diff --git a/src/plugins/qmldesigner/libs/designercore/model/model_p.h b/src/plugins/qmldesigner/libs/designercore/model/model_p.h index 1dc8c0de2ab..4785bb6876c 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/libs/designercore/model/model_p.h @@ -292,8 +292,8 @@ public: void setScriptFunctions(const InternalNodePointer &node, const QStringList &scriptFunctionList); void setNodeSource(const InternalNodePointer &node, const QString &nodeSource); - InternalNodePointer nodeForId(const QString &id) const; - bool hasId(const QString &id) const; + InternalNodePointer nodeForId(QStringView id) const; + bool hasId(QStringView id) const; InternalNodePointer nodeForInternalId(qint32 internalId) const; bool hasNodeForInternalId(qint32 internalId) const;