From 2a0a1181f9cf3f5dee7ee15d4752dc99119bf4e2 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Mon, 12 Dec 2022 17:39:47 +0200 Subject: [PATCH] QmlDesigner: Resolve active scene id also at model attach When coming back to previously loaded document, the sceneId will be available at model attach time and there will not be separate changed notification for it. Fixes: QDS-8585 Change-Id: Ic8fcd4e2ec9123adc39d0c1cdca3bdb86d3a7924 Reviewed-by: Mahmoud Badri Reviewed-by: --- .../components/assetslibrary/assetslibraryview.cpp | 2 ++ .../components/contentlibrary/contentlibraryview.cpp | 2 ++ .../components/materialbrowser/materialbrowserview.cpp | 2 ++ src/plugins/qmldesigner/designercore/include/model.h | 1 + src/plugins/qmldesigner/designercore/model/model.cpp | 8 ++++++++ 5 files changed, 15 insertions(+) diff --git a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp index ef6aa9f610e..c43bd485334 100644 --- a/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp +++ b/src/plugins/qmldesigner/components/assetslibrary/assetslibraryview.cpp @@ -82,6 +82,8 @@ void AssetsLibraryView::modelAttached(Model *model) m_widget->setModel(model); setResourcePath(DocumentManager::currentResourcePath().toFileInfo().absoluteFilePath()); + + m_sceneId = model->active3DSceneId(); } void AssetsLibraryView::modelAboutToBeDetached(Model *model) diff --git a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp index 856d4077e12..764bb7f155a 100644 --- a/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp +++ b/src/plugins/qmldesigner/components/contentlibrary/contentlibraryview.cpp @@ -130,6 +130,8 @@ void ContentLibraryView::modelAttached(Model *model) const bool hasLibrary = materialLibraryNode().isValid(); m_widget->setHasMaterialLibrary(hasLibrary); m_widget->setHasQuick3DImport(m_hasQuick3DImport); + + m_sceneId = model->active3DSceneId(); } void ContentLibraryView::modelAboutToBeDetached(Model *model) diff --git a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp index be3a45ad2ab..534ee4c4922 100644 --- a/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp +++ b/src/plugins/qmldesigner/components/materialbrowser/materialbrowserview.cpp @@ -229,6 +229,8 @@ void MaterialBrowserView::modelAttached(Model *model) refreshModel(true); loadPropertyGroups(); // Needs the delay because it uses metaInfo }); + + m_sceneId = model->active3DSceneId(); } void MaterialBrowserView::refreshModel(bool updateImages) diff --git a/src/plugins/qmldesigner/designercore/include/model.h b/src/plugins/qmldesigner/designercore/include/model.h index e22dbe70b6e..336a5b2d280 100644 --- a/src/plugins/qmldesigner/designercore/include/model.h +++ b/src/plugins/qmldesigner/designercore/include/model.h @@ -149,6 +149,7 @@ public: QString generateIdFromName(const QString &name, const QString &fallbackId = "element") const; void setActive3DSceneId(qint32 sceneId); + qint32 active3DSceneId() const; void startDrag(QMimeData *mimeData, const QPixmap &icon); void endDrag(); diff --git a/src/plugins/qmldesigner/designercore/model/model.cpp b/src/plugins/qmldesigner/designercore/model/model.cpp index f3d8f403d61..0909afabac1 100644 --- a/src/plugins/qmldesigner/designercore/model/model.cpp +++ b/src/plugins/qmldesigner/designercore/model/model.cpp @@ -1596,6 +1596,14 @@ void Model::setActive3DSceneId(qint32 sceneId) d->notifyActive3DSceneIdChanged(sceneId); } +qint32 Model::active3DSceneId() const +{ + auto sceneId = d->rootNode()->auxiliaryData(active3dSceneProperty); + if (sceneId) + return sceneId->toInt(); + return -1; +} + void Model::startDrag(QMimeData *mimeData, const QPixmap &icon) { d->notifyDragStarted(mimeData);