diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2018-12-04 15:37:53 +0200 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2018-12-07 09:48:15 +0000 |
commit | b62fc3df51e84f77abb28c518e6a5b94d973ddd7 (patch) | |
tree | 3dbd22f2ae82b182ab1a0163e36be8ee8ce81cf1 /src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp | |
parent | fe7d761863dc6f0da20319ddccd38ae3016ed2c3 (diff) |
Fix a bug where undoing material type change doesnt update in the scene
Also prevent adding duplicates to the file change list
Task-number: QT3DS-2768
Change-Id: I3e3f2869f6bb215ce86425a5ea25f7ea07fdffdc
Reviewed-by: Jere Tuliniemi <jere.tuliniemi@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp')
-rw-r--r-- | src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp index 4016fb33..10d79c02 100644 --- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.cpp @@ -157,10 +157,30 @@ void InspectorControlView::onFilesChanged( Q3DStudio::CFilePath::GetRelativePathFromBase( g_StudioApp.GetCore()->GetDoc()->GetDocumentDirectory(), record.m_File)); - if (record.m_ModificationType == Q3DStudio::FileModificationType::Created) + + if (record.m_ModificationType == Q3DStudio::FileModificationType::Created) { qt3dsdm::binary_sort_insert_unique(m_fileList, relativePath); - else if (record.m_ModificationType == Q3DStudio::FileModificationType::Destroyed) + } else if (record.m_ModificationType + == Q3DStudio::FileModificationType::Destroyed) { qt3dsdm::binary_sort_erase(m_fileList, relativePath); + } else if (record.m_ModificationType == Q3DStudio::FileModificationType::Modified) { + // TODO: Hot fix for a case when undoing a material type change does not update + // in the scene (QT3DS-2768) (any better solution?) + // This fix should be checked and removed if not needed after (QT3DS-2827) is + // fixed + const auto doc = g_StudioApp.GetCore()->GetDoc(); + const auto bridge = doc->GetStudioSystem()->GetClientDataModelBridge(); + auto mat = doc->getSceneEditor()->getMaterial(record.m_File.toQString()); + QVector<qt3dsdm::Qt3DSDMInstanceHandle> refMats; + doc->getSceneReferencedMaterials(doc->GetSceneInstance(), refMats); + for (auto &refMat : qAsConst(refMats)) { + if (bridge->getMaterialReference(refMat) == mat) { + const auto dispatch = g_StudioApp.GetCore()->GetDispatch(); + dispatch->FireImmediateRefreshInstance(refMat); + break; + } + } + } } else if (isInList(fontExtensions, record.m_File.GetExtension())) { if (record.m_ModificationType == Q3DStudio::FileModificationType::Created || record.m_ModificationType == Q3DStudio::FileModificationType::Destroyed) { |