diff --git a/GUI/coregui/Models/SampleModel.cpp b/GUI/coregui/Models/SampleModel.cpp index ee671ce1a316c21c3644ecb1d1e2e4896b5423e8..5ef128aad32e7ecbaffa2a1b6681222bd34334a4 100644 --- a/GUI/coregui/Models/SampleModel.cpp +++ b/GUI/coregui/Models/SampleModel.cpp @@ -17,6 +17,8 @@ #include "SampleModel.h" #include "LayerItem.h" #include "MultiLayerItem.h" +#include "MaterialProperty.h" +#include "MaterialSvc.h" SampleModel::SampleModel(QObject *parent) : SessionModel(SessionXML::SampleModelTag, parent) @@ -55,8 +57,14 @@ void SampleModel::exploreForMaterials(const QModelIndex &parentIndex) if (SessionItem *item = itemForIndex(itemIndex)) { if (item->modelType() == Constants::LayerType || item->modelType() == Constants::ParticleType) { - // we pretend here that MaterialProperty changed to update IView colors - item->getItem(LayerItem::P_MATERIAL)->emitDataChanged(); + MaterialProperty material_property = + item->getItemValue(LayerItem::P_MATERIAL).value<MaterialProperty>(); + if(!MaterialSvc::getMaterial(material_property)) { + item->setItemValue(LayerItem::P_MATERIAL, MaterialProperty().getVariant()); + } else { + // we pretend here that MaterialProperty changed to update IView colors + item->getItem(LayerItem::P_MATERIAL)->emitDataChanged(); + } } } exploreForMaterials(itemIndex); diff --git a/GUI/coregui/Views/MaterialEditor/MaterialUtils.cpp b/GUI/coregui/Views/MaterialEditor/MaterialUtils.cpp index 2feee946bb67ad3b4f49b6e55f1d570363e8d055..c7505ea2f7a7e153bebd476103b3a12257a8ca34 100644 --- a/GUI/coregui/Views/MaterialEditor/MaterialUtils.cpp +++ b/GUI/coregui/Views/MaterialEditor/MaterialUtils.cpp @@ -66,6 +66,10 @@ MaterialUtils::createDomainMaterial(const MaterialProperty &material_property) { MaterialItem *materialItem = MaterialSvc::getMaterial(material_property); - Q_ASSERT(materialItem); + + if(!materialItem) + throw GUIHelpers::Error("MaterialUtils::createDomainMaterial() -> Error. Can't create " + "material with name '"+material_property.getName()+"'."); + return materialItem->createMaterial(); }