]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #854 Fillet angle modification redisplay the presentation twice
authornds <nds@opencascade.com>
Mon, 31 Aug 2015 10:23:31 +0000 (13:23 +0300)
committernds <nds@opencascade.com>
Mon, 31 Aug 2015 10:23:31 +0000 (13:23 +0300)
EVENT_OBJECT_TO_REDISPLAY is not necessary because it is sent by model when it processes EVENT_OBJECT_UPDATED.
In order to avoid the bug, the current decision is to do not redraw OCC viewer until the message is processed.

src/ModuleBase/ModuleBase_ModelWidget.cpp

index 63d8095fcc206036af95483e000fb618a4d20c3b..c47c42ca6522483ccf6f8eca0baf283adf1261d6 100644 (file)
@@ -150,9 +150,20 @@ bool ModuleBase_ModelWidget::restoreValue()
 
 void ModuleBase_ModelWidget::updateObject(ObjectPtr theObj)
 {
+  // the viewer update should be blocked in order to avoid the temporary feature content
+  // when the solver processes the feature, the redisplay message can be flushed
+  // what caused the display in the viewer preliminary states of object
+  // e.g. fillet feature, angle value change
+  std::shared_ptr<Events_Message> aMsg = std::shared_ptr<Events_Message>(
+      new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_BLOCKED)));
+  Events_Loop::loop()->send(aMsg);
+
   Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
-  static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
-  ModelAPI_EventCreator::get()->sendUpdated(theObj, anEvent);
+
+  // the viewer update should be unblocked
+  aMsg = std::shared_ptr<Events_Message>(
+                new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_UNBLOCKED)));
+  Events_Loop::loop()->send(aMsg);
 }
 
 void ModuleBase_ModelWidget::moveObject(ObjectPtr theObj)