diff --git a/src/plugins/qmldesigner/libs/designercore/model/model.cpp b/src/plugins/qmldesigner/libs/designercore/model/model.cpp index 135c13bf09d..68bf3309688 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/libs/designercore/model/model.cpp @@ -1304,7 +1304,7 @@ void ModelPrivate::setSelectedNodes(const FewNodes &selectedNodeList) })); } - changeSelectedNodes(sortedSelectedList, lastSelectedNodeList); + notifySelectedNodesChanged(sortedSelectedList, lastSelectedNodeList); } void ModelPrivate::clearSelectedNodes() @@ -1313,7 +1313,7 @@ void ModelPrivate::clearSelectedNodes() auto lastSelectedNodeList = m_selectedInternalNodes; m_selectedInternalNodes.clear(); - changeSelectedNodes(m_selectedInternalNodes, lastSelectedNodeList); + notifySelectedNodesChanged(m_selectedInternalNodes, lastSelectedNodeList); } void ModelPrivate::removeAuxiliaryData(const InternalNodePointer &node, const AuxiliaryDataKeyView &key) @@ -1378,21 +1378,15 @@ QList> ModelPrivate::toInternalBi return internalProperties; } -void ModelPrivate::changeSelectedNodes(const FewNodes &newSelectedNodeList, - const FewNodes &oldSelectedNodeList) +void ModelPrivate::notifySelectedNodesChanged(const FewNodes &newSelectedNodeList, + const FewNodes &oldSelectedNodeList) { NanotraceHR::Tracer tracer{"model private change selected nodes", ModelTracing::category()}; - for (const QPointer &view : std::as_const(m_viewList)) { - Q_ASSERT(view != nullptr); - view->selectedNodesChanged(toModelNodeList(newSelectedNodeList, view.data()), - toModelNodeList(oldSelectedNodeList, view.data())); - } - - if (nodeInstanceView()) { - nodeInstanceView()->selectedNodesChanged(toModelNodeList(newSelectedNodeList, nodeInstanceView()), - toModelNodeList(oldSelectedNodeList, nodeInstanceView())); - } + notifyNodeInstanceViewLast([&](AbstractView *view) { + view->selectedNodesChanged(toModelNodeList(newSelectedNodeList, view), + toModelNodeList(oldSelectedNodeList, view)); + }); } const ModelPrivate::FewNodes &ModelPrivate::selectedNodes() const diff --git a/src/plugins/qmldesigner/libs/designercore/model/model_p.h b/src/plugins/qmldesigner/libs/designercore/model/model_p.h index 13e8d8aaf2b..7841cced72c 100644 --- a/src/plugins/qmldesigner/libs/designercore/model/model_p.h +++ b/src/plugins/qmldesigner/libs/designercore/model/model_p.h @@ -231,7 +231,8 @@ public: const FewNodes &selectedNodes() const; void selectNode(const InternalNodePointer &node); void deselectNode(const InternalNodePointer &node); - void changeSelectedNodes(const FewNodes &newSelectedNodeList, const FewNodes &oldSelectedNodeList); + void notifySelectedNodesChanged(const FewNodes &newSelectedNodeList, + const FewNodes &oldSelectedNodeList); void setAuxiliaryData(const InternalNodePointer &node, const AuxiliaryDataKeyView &key,