]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Boolean result build correction. There was a stabilization fix, which disconnected...
authornds <natalia.donis@opencascade.com>
Thu, 20 Aug 2015 12:50:55 +0000 (15:50 +0300)
committernds <natalia.donis@opencascade.com>
Fri, 21 Aug 2015 04:01:30 +0000 (07:01 +0300)
So, it is more correctly to clean content of the property panel before commit.
Scenario to reproduce the problem: Create sketch(contour), create sketch(circles in the contour), create extrusion(contour), extrusion(circles), create boolean from contour-based to Cut circle-based extrusions. Apply, the circle-based extrusions are disappeared from the second control.

src/ModuleBase/ModuleBase_Operation.cpp

index fb3bebd72a9a2513736b14eb7e140ed0242ef0a2..6557d71b8206cf3147b1c5b4e53d9bdd16765b61 100644 (file)
@@ -187,6 +187,14 @@ void ModuleBase_Operation::abort()
       new Events_Message(Events_Loop::eventByName(EVENT_UPDATE_VIEWER_BLOCKED)));
   Events_Loop::loop()->send(aMsg);
 
+  // the widgets of property panel should not process any events come from data mode
+  // after abort clicked. Some signal such as redisplay/create influence on content
+  // of the object browser and viewer context. Therefore it influence to the current
+  // selection and if the active widget listens it, the attribute value is errnoneous
+  // changed.
+  if (myPropertyPanel)
+    myPropertyPanel->cleanContent();
+
   SessionPtr aMgr = ModelAPI_Session::get();
   if (myIsEditing) {
     DocumentPtr aDoc = aMgr->activeDocument();
@@ -220,6 +228,14 @@ void ModuleBase_Operation::abort()
 bool ModuleBase_Operation::commit()
 {
   if (canBeCommitted()) {
+    // the widgets of property panel should not process any events come from data mode
+    // after commit clicked. Some signal such as redisplay/create influence on content
+    // of the object browser and viewer context. Therefore it influence to the current
+    // selection and if the active widget listens it, the attribute value is errnoneous
+    // changed.
+    if (myPropertyPanel)
+      myPropertyPanel->cleanContent();
+
     SessionPtr aMgr = ModelAPI_Session::get();
     /// Set current feature and remeber old current feature
     if (myIsEditing) {