Salome HOME
It corrects the validator parameter from the entrity to viewerprs in order to validat...
[modules/shaper.git] / src / ModuleBase / ModuleBase_WidgetValidated.cpp
index e7285ab159157d243e0aa4447e99250fd1bc43b6..0c84fa8e9ad0e4b86512fe7b60ccb88dfa32a470 100644 (file)
@@ -11,6 +11,8 @@
 #include <SelectMgr_ListIteratorOfListOfFilter.hxx>
 #include <SelectMgr_EntityOwner.hxx>
 
+#include <Events_Loop.h>
+
 #include <QWidget>
 
 ModuleBase_WidgetValidated::ModuleBase_WidgetValidated(QWidget* theParent,
@@ -29,9 +31,8 @@ bool ModuleBase_WidgetValidated::setSelection(ModuleBase_ViewerPrs theValue)
 {
   bool isDone = false;
 
-  Handle(SelectMgr_EntityOwner) anOwner = theValue.owner();
-  if (isValid(anOwner)) {
-    setSelection(anOwner);
+  if (isValidSelection(theValue)) {
+    isDone = setSelectionCustom(theValue);
     updateObject(myFeature);
     emit valuesChanged();
   }
@@ -39,26 +40,33 @@ bool ModuleBase_WidgetValidated::setSelection(ModuleBase_ViewerPrs theValue)
 }
 
 //********************************************************************
-bool ModuleBase_WidgetValidated::isValid(const Handle_SelectMgr_EntityOwner& theOwner)
+bool ModuleBase_WidgetValidated::isValidSelection(const ModuleBase_ViewerPrs& theValue)
 {
   DataPtr aData = myFeature->data();
   AttributePtr anAttribute = myFeature->attribute(attributeID());
 
   // stores the current values of the widget attribute
+  Events_Loop* aLoop = Events_Loop::loop();
+  // blocks the flush signals to avoid the temporary objects visualization in the viewer
+  // they should not be shown in order to do not lose highlight by erasing them
+  aLoop->activateFlushes(false);
+
   aData->blockSendAttributeUpdated(true);
   bool isAttributeBlocked = anAttribute->blockSetInitialized(true);
   storeAttributeValue();
 
   // saves the owner value to the widget attribute
-  setSelection(theOwner);
+  bool aValid = setSelectionCustom(theValue);
 
-  // checks the attribute validity
-  bool aValid = isValidAttribute();
+  if (aValid)
+    // checks the attribute validity
+    aValid = isValidAttribute();
 
   // restores the current values of the widget attribute
   restoreAttributeValue(aValid);
   aData->blockSendAttributeUpdated(false);
   anAttribute->blockSetInitialized(isAttributeBlocked);
+  aLoop->activateFlushes(true);
 
   return aValid;
 }