diff --git a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp index 65f0a9a12f2..4378596940e 100644 --- a/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp +++ b/src/plugins/qmldesigner/components/integration/designdocumentcontroller.cpp @@ -437,6 +437,7 @@ void DesignDocumentController::loadCurrentModel() Q_ASSERT(m_d->model); m_d->model->setMasterModel(m_d->masterModel.data()); + m_d->nodeInstanceView->setPathToQt(pathToQt()); m_d->model->attachView(m_d->nodeInstanceView.data()); m_d->model->attachView(m_d->navigator.data()); m_d->itemLibraryView->widget()->setResourcePath(QFileInfo(m_d->fileName).absolutePath()); @@ -822,8 +823,13 @@ void DesignDocumentController::activeQtVersionChanged() return; } + if (m_d->qt_versionId == newQtVersion->uniqueId()) + return; + m_d->qt_versionId = newQtVersion->uniqueId(); + if (m_d->nodeInstanceView) + m_d->nodeInstanceView->setPathToQt(pathToQt()); } #ifdef ENABLE_TEXT_VIEW diff --git a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h index d006705fc40..0bbfa742259 100644 --- a/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h +++ b/src/plugins/qmldesigner/designercore/include/nodeinstanceview.h @@ -138,6 +138,8 @@ public: QImage statePreviewImage(const ModelNode &stateNode) const; + void setPathToQt(const QString &pathToQt); + signals: void qmlPuppetCrashed(); @@ -195,6 +197,7 @@ private: //variables QImage m_baseStatePreviewImage; QTime m_lastCrashTime; NodeInstanceServerInterface::RunModus m_runModus; + QString m_pathToQt; }; } // namespace ProxyNodeInstanceView diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp index 411c0c1d647..76f82d6a074 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.cpp @@ -88,7 +88,7 @@ static bool hasQtQuick1(NodeInstanceView *nodeInstanceView) return false; } -NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus) +NodeInstanceServerProxy::NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus, const QString &pathToQt) : NodeInstanceServerInterface(nodeInstanceView), m_localServer(new QLocalServer(this)), m_nodeInstanceView(nodeInstanceView), diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h index 42b29db73e8..2ed94bdf8a8 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceserverproxy.h @@ -55,7 +55,7 @@ class NodeInstanceServerProxy : public NodeInstanceServerInterface { Q_OBJECT public: - explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus = NormalModus); + explicit NodeInstanceServerProxy(NodeInstanceView *nodeInstanceView, RunModus runModus = NormalModus, const QString &pathToQt = QString()); ~NodeInstanceServerProxy(); void createInstances(const CreateInstancesCommand &command); void changeFileUrl(const ChangeFileUrlCommand &command); diff --git a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp index 472a179c947..eeb80734213 100644 --- a/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp +++ b/src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp @@ -164,7 +164,7 @@ bool isSkippedNode(const ModelNode &node) void NodeInstanceView::modelAttached(Model *model) { AbstractView::modelAttached(model); - m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus); + m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_pathToQt); m_lastCrashTime.start(); connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash())); @@ -203,7 +203,7 @@ void NodeInstanceView::restartProcess() if (model()) { delete nodeInstanceServer(); - m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus); + m_nodeInstanceServer = new NodeInstanceServerProxy(this, m_runModus, m_pathToQt); connect(m_nodeInstanceServer.data(), SIGNAL(processCrashed()), this, SLOT(handleChrash())); if (!isSkippedRootNode(rootModelNode())) @@ -1076,6 +1076,12 @@ QImage NodeInstanceView::statePreviewImage(const ModelNode &stateNode) const return m_statePreviewImage.value(stateNode); } +void NodeInstanceView::setPathToQt(const QString &pathToQt) +{ + m_pathToQt = pathToQt; + restartProcess(); +} + void NodeInstanceView::statePreviewImagesChanged(const StatePreviewImageChangedCommand &command) { if (!model())