From 44d013ca2937e03b691e4b130ba1fc600a610a6c Mon Sep 17 00:00:00 2001 From: jfa Date: Mon, 14 Nov 2011 12:57:44 +0000 Subject: [PATCH] Mantis issue 0021421: [CEA] regression with explode/Create groups with Vertex type. --- src/EntityGUI/EntityGUI_SubShapeDlg.cxx | 43 +++++++++++++++++++------ src/GroupGUI/GroupGUI_GroupDlg.cxx | 37 +++++++++++++++++---- 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx index 19d30cbf4..e65655656 100644 --- a/src/EntityGUI/EntityGUI_SubShapeDlg.cxx +++ b/src/EntityGUI/EntityGUI_SubShapeDlg.cxx @@ -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; + } } } diff --git a/src/GroupGUI/GroupGUI_GroupDlg.cxx b/src/GroupGUI/GroupGUI_GroupDlg.cxx index 4cc1e2cb5..356b9e1a1 100644 --- a/src/GroupGUI/GroupGUI_GroupDlg.cxx +++ b/src/GroupGUI/GroupGUI_GroupDlg.cxx @@ -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; + } } } -- 2.39.2