Salome HOME
[EDF30038] : Fix problem of FieldsStatus forwarding in spatial series context
authorAnthony Geay <anthony.geay@edf.fr>
Fri, 26 Apr 2024 08:20:24 +0000 (10:20 +0200)
committerAnthony Geay <anthony.geay@edf.fr>
Fri, 26 Apr 2024 08:20:24 +0000 (10:20 +0200)
src/Plugins/MEDReader/plugin/MEDReaderIO/vtkFileSeriesGroupReader.cxx
src/Plugins/MEDReader/plugin/MEDReaderIO/vtkMEDReader.cxx

index 722aef9a417bae39ca64cfb9c97c6dbe928a917e..5adfb5b0b32b8e56aaf2d429e513873e571f3562 100644 (file)
@@ -195,12 +195,12 @@ int vtkFileSeriesGroupReader::RequestData(vtkInformation* vtkNotUsed(request),
 
       for (int iField = 0; iField < exposedReader->GetNumberOfFieldsTreeArrays(); iField++)
       {
-       const char* name = exposedReader->GetFieldsTreeArrayName(iField);
+        const char* name = exposedReader->GetFieldsTreeArrayName(iField);
         localReader->SetFieldsStatus(name, exposedReader->GetFieldsTreeArrayStatus(name));
       }
       for (int iTimes = 0; iTimes < exposedReader->GetNumberOfTimesFlagsArrays(); iTimes++)
       {
-       const char* name = exposedReader->GetTimesFlagsArrayName(iTimes);
+        const char* name = exposedReader->GetTimesFlagsArrayName(iTimes);
         localReader->SetTimesFlagsStatus(name, exposedReader->GetTimesFlagsArrayStatus(name));
       }
       localReader->GenerateVectors(exposedReader->GetGenerateVect());
index b15de13c27f5a3d8ee1cb90e7205ae378def1efd..5fbe12219bc2d4edf96f3961e670ee8805c0e2ec 100755 (executable)
@@ -407,13 +407,20 @@ const char* vtkMEDReader::GetFieldsTreeArrayName(int index)
 
 //------------------------------------------------------------------------------
 int vtkMEDReader::GetFieldsTreeArrayStatus(const char* name)
-{
+{// EDF30038 : This method can alterate this->FieldSelection !
   return this->FieldSelection->ArrayIsEnabled(name);
 }
 
 //------------------------------------------------------------------------------
 void vtkMEDReader::SetFieldsStatus(const char* name, int status)
 {
+  // EDF30038 : GetFieldsTreeArrayStatus does not inform if the name entry already exists. So start to deal with this
+  if( ! this->FieldSelection->ArrayExists( name ) )
+  {
+    this->FieldSelection->SetArraySetting( name, status );
+    this->Modified();
+    return ;
+  }
   if (this->GetFieldsTreeArrayStatus(name) != status)
   {
     if (status)