]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
PAL11188: PAL_NO_ERROR on Explode, if the main shape is not displayed, but some of...
authorjfa <jfa@opencascade.com>
Mon, 23 Jan 2006 09:18:05 +0000 (09:18 +0000)
committerjfa <jfa@opencascade.com>
Mon, 23 Jan 2006 09:18:05 +0000 (09:18 +0000)
src/GEOMBase/GEOMBase_Helper.cxx
src/GEOMGUI/GEOM_Displayer.cxx

index 69196f3aae28f775da4af600c6af032a96a894da..785684eb1e30f617a34e8d31467bcb7d2e1cd9b0 100755 (executable)
@@ -98,7 +98,8 @@ GEOMBase_Helper::~GEOMBase_Helper()
 
   globalSelection( GEOM_ALLOBJECTS, true );
 
-  delete myDisplayer;
+  if (myDisplayer)
+    delete myDisplayer;
 }
 
 //================================================================
@@ -382,7 +383,7 @@ void GEOMBase_Helper::activate( const int theType )
     }
   }
 
-  myDisplayer->LocalSelection( aList, 0 );
+  getDisplayer()->LocalSelection( aList, 0 );
 }
 
 //================================================================
@@ -406,7 +407,7 @@ void GEOMBase_Helper::localSelection( const ObjectList& theObjs, const int theMo
         aEntry.c_str(), "GEOM", strdup( GEOMBase::GetName( anObj ) ) ) );
   }
 
-  myDisplayer->LocalSelection( aListOfIO, theMode );
+  getDisplayer()->LocalSelection( aListOfIO, theMode );
 }
 
 //================================================================
@@ -418,7 +419,7 @@ void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode
 {
   // If object is null local selection for all objects is activated
   if ( obj->_is_nil() ) {
-    myDisplayer->LocalSelection( Handle(SALOME_InteractiveObject)(), mode );
+    getDisplayer()->LocalSelection( Handle(SALOME_InteractiveObject)(), mode );
     return;
   }
 
@@ -435,7 +436,7 @@ void GEOMBase_Helper::localSelection( GEOM::GEOM_Object_ptr obj, const int mode
 //================================================================
 void GEOMBase_Helper::globalSelection( const int theMode, const bool update )
 {
-  myDisplayer->GlobalSelection( theMode, update );
+  getDisplayer()->GlobalSelection( theMode, update );
 }
 
 //================================================================
@@ -446,7 +447,7 @@ void GEOMBase_Helper::globalSelection( const int theMode, const bool update )
 void GEOMBase_Helper::globalSelection( const TColStd_MapOfInteger& theModes,
                                       const bool update )
 {
-  myDisplayer->GlobalSelection( theModes, update );
+  getDisplayer()->GlobalSelection( theModes, update );
 }
 
 //================================================================
index f518e4ecb50120261adb7e2eba088b53c850aed3..457d3ef26eea8f120c1c16564a92edd24f9a83c8 100644 (file)
@@ -840,6 +840,8 @@ void GEOM_Displayer::LocalSelection( const Handle(SALOME_InteractiveObject)& the
   QAD_ViewFrame* vf = GetActiveView();
   if ( vf )
   {
+    if (!theIO.IsNull() && !vf->isVisible(theIO))
+      Display(theIO);
     SALOME_Prs* prs = vf->CreatePrs( theIO.IsNull() ? 0 : theIO->getEntry() );
     ((SALOME_View*)vf)->LocalSelection( prs, theMode );
     delete prs;  // delete presentation because displayer is its owner