]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Mantis issue 0021421: [CEA] regression with explode/Create groups with Vertex type.
authorjfa <jfa@opencascade.com>
Mon, 14 Nov 2011 12:57:44 +0000 (12:57 +0000)
committerjfa <jfa@opencascade.com>
Mon, 14 Nov 2011 12:57:44 +0000 (12:57 +0000)
src/EntityGUI/EntityGUI_SubShapeDlg.cxx
src/GroupGUI/GroupGUI_GroupDlg.cxx

index 19d30cbf4f0e961cba3c2997ce942ca291aaa2a3..e65655656ae3511fe4dde3a60ca7bc68a6d722e4 100644 (file)
@@ -544,7 +544,7 @@ int EntityGUI_SubShapeDlg::shapeType() const
   // Solving PAL5590
   type += myShape.ShapeType() + 1;
   if (myShape.ShapeType() == TopAbs_COMPOUND &&
-       NumberOfSubShapes(myShape, TopAbs_COMPOUND) > 0) {
+      NumberOfSubShapes(myShape, TopAbs_COMPOUND) > 0) {
     type--;
   }
 
@@ -573,11 +573,25 @@ void EntityGUI_SubShapeDlg::showOnlySelected()
   GEOM_Displayer* aDisplayer = getDisplayer();
 
   if (send == GroupPoints->PushButton3) {
-    aDisplayer->Erase(aSelList, false, true);
+    aDisplayer->Erase(aSelList, /*forced=*/false, /*updateViewer=*/true);
   }
   else {
-    aDisplayer->EraseAll();
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    SALOME_View* view = GEOM_Displayer::GetActiveView();
+    if (view) {
+      CORBA::String_var aMainEntry = myObject->GetStudyEntry();
+      Handle(SALOME_InteractiveObject) io =
+        new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
+      if (view->isVisible(io)) myIsHiddenMain = true;
+    }
+
+    aDisplayer->EraseAll(/*forced = false, updateViewer = true*/);
     aDisplayer->Display(aSelList, true);
+
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    if ((TopAbs_ShapeEnum)shapeType() == TopAbs_VERTEX && myIsHiddenMain) {
+      aDisplayer->Display(myObject);
+    }
   }
 }
 
@@ -658,13 +672,22 @@ void EntityGUI_SubShapeDlg::activateSelection()
   if (!myObject->_is_nil() && !isAllSubShapes())
   {
     GEOM_Displayer* aDisplayer = getDisplayer();
-    SALOME_View* view = GEOM_Displayer::GetActiveView();
-    if (view) {
-      CORBA::String_var aMainEntry = myObject->GetStudyEntry();
-      Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
-      if (view->isVisible(io)) {
-        aDisplayer->Erase(myObject, false, false);
-        myIsHiddenMain = true;
+
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    if ((TopAbs_ShapeEnum)shapeType() == TopAbs_VERTEX) {
+      if (myIsHiddenMain)
+        aDisplayer->Display(myObject);
+    }
+    else {
+      SALOME_View* view = GEOM_Displayer::GetActiveView();
+      if (view) {
+        CORBA::String_var aMainEntry = myObject->GetStudyEntry();
+        Handle(SALOME_InteractiveObject) io =
+          new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
+        if (view->isVisible(io)) {
+          aDisplayer->Erase(myObject, false, false);
+          myIsHiddenMain = true;
+        }
       }
     }
 
index 4cc1e2cb56413d17893bd1ecad393fa6c2449448..356b9e1a1095b6f896d29f6cb4ff4f530dc770df 100644 (file)
@@ -620,9 +620,23 @@ void GroupGUI_GroupDlg::showOnlySelected()
     aDisplayer->Erase(aSelList, /*forced=*/false, /*updateViewer=*/true);
   }
   else {
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    SALOME_View* view = GEOM_Displayer::GetActiveView();
+    if (view) {
+      CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
+      Handle(SALOME_InteractiveObject) io =
+        new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
+      if (view->isVisible(io)) myIsHiddenMain = true;
+    }
+
     aDisplayer->EraseAll(/*forced = false, updateViewer = true*/);
     aDisplayer->Display(aSelList, true);
 
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    if (getShapeType() == TopAbs_VERTEX && myIsHiddenMain) {
+      aDisplayer->Display(myMainObj);
+    }
+
     // for the case when selected ids were not displayed in the viewer: Mantis issue 0021367
     highlightSubShapes();
   }
@@ -807,13 +821,22 @@ void GroupGUI_GroupDlg::activateSelection()
       myIsShapeType) // check if shape type is already choosen by user
   {
     GEOM_Displayer* aDisplayer = getDisplayer();
-    SALOME_View* view = GEOM_Displayer::GetActiveView();
-    if (view) {
-      CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
-      Handle(SALOME_InteractiveObject) io = new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
-      if (view->isVisible(io)) {
-        aDisplayer->Erase(myMainObj, false, false);
-        myIsHiddenMain = true;
+
+    // Mantis issue 0021421: do not hide main shape, if explode on VERTEX
+    if (getShapeType() == TopAbs_VERTEX) {
+      if (myIsHiddenMain)
+        aDisplayer->Display(myMainObj);
+    }
+    else {
+      SALOME_View* view = GEOM_Displayer::GetActiveView();
+      if (view) {
+        CORBA::String_var aMainEntry = myMainObj->GetStudyEntry();
+        Handle(SALOME_InteractiveObject) io =
+          new SALOME_InteractiveObject (aMainEntry.in(), "GEOM", "TEMP_IO");
+        if (view->isVisible(io)) {
+          aDisplayer->Erase(myMainObj, false, false);
+          myIsHiddenMain = true;
+        }
       }
     }