]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Result preview is low for the point. The updateViewer() should be blocked in moveObje...
authornds <nds@opencascade.com>
Mon, 7 Sep 2015 04:59:29 +0000 (07:59 +0300)
committernds <nds@opencascade.com>
Mon, 7 Sep 2015 04:59:29 +0000 (07:59 +0300)
src/ModuleBase/ModuleBase_ModelWidget.cpp
src/ModuleBase/ModuleBase_ModelWidget.h

index c47c42ca6522483ccf6f8eca0baf283adf1261d6..556340b5606b204d822d2f237df87a1d2b09823c 100644 (file)
@@ -150,27 +150,22 @@ 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);
+  blockUpdateViewer(true);
 
   Events_Loop::loop()->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED));
 
-  // 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);
+  blockUpdateViewer(false);
 }
 
 void ModuleBase_ModelWidget::moveObject(ObjectPtr theObj)
 {
+  blockUpdateViewer(true);
+
   static Events_ID anEvent = Events_Loop::eventByName(EVENT_OBJECT_MOVED);
   ModelAPI_EventCreator::get()->sendUpdated(theObj, anEvent);
   Events_Loop::loop()->flush(anEvent);
+
+  blockUpdateViewer(false);
 }
 
 bool ModuleBase_ModelWidget::eventFilter(QObject* theObject, QEvent *theEvent)
@@ -196,3 +191,23 @@ void ModuleBase_ModelWidget::onWidgetValuesChanged()
 {
   storeValue();
 }
+
+//**************************************************************
+void ModuleBase_ModelWidget::blockUpdateViewer(const bool theValue)
+{
+  // 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;
+  if (theValue) {
+    aMsg = std::shared_ptr<Events_Message>(
+        new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_BLOCKED)));
+  }
+  else {
+    // 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);
+}
index bd9c15b0e0edb5ecc426b6f3ac9ee017c107b7d0..d09e824c1118ea22c6b2e92a6eb3ca8cdf43cbce 100644 (file)
@@ -204,6 +204,10 @@ protected:
   /// The method called when widget is activated
   virtual void activateCustom() {};
 
+  /// Sends a message about block/unblock viewer updating
+  /// \param theValue a boolean value
+  static void blockUpdateViewer(const bool theValue);
+
 protected slots:
   /// Processing of values changed in model widget by store the current value to the feature
   void onWidgetValuesChanged();