]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Fix for a bug with popup in VISU: Display/Erase/Display Only commands were added... OCC_3_2_0a2_TC
authorasv <asv@opencascade.com>
Mon, 20 Mar 2006 14:48:38 +0000 (14:48 +0000)
committerasv <asv@opencascade.com>
Mon, 20 Mar 2006 14:48:38 +0000 (14:48 +0000)
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI_PopupTools.cxx
src/VISUGUI/VisuGUI_PopupTools.h

index 3c2ad86737b9aaf2a87f8df20288fd1f937663c3..9fa0c8d836ef001ea3a4879eb915991cb32e1a1b 100644 (file)
@@ -2417,7 +2417,7 @@ createPopupMenus()
   QString orCurveInvisible = "or (type='VISU::TCURVE'" + andInvisible + ")";
   QString aPrsVisible   = "(($type in {'VISU::TMESH' " + aPrsAll + "}) and isVisible)";
   QString aPrsInvisible = "(($type in {'VISU::TMESH' " + aPrsAll + "})" + andInvisible + ")";
-  QString aComponent = "( selcount=1 and canBeDisplayed and isComponent )";
+  QString aComponent = "( selcount=1 and canBeDisplayed and isVisuComponent )";
 
   QString anEraseRule = "( selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsVisible +
     " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveVisible + "))) ) or " + aComponent;
index 682997773b06824d0155f94a037d898b82bcc271..624662df665c5f1f71589d618838e53701b2a013 100644 (file)
@@ -31,6 +31,7 @@
 #include "VisuGUI_Tools.h"
 
 #include "VISU_Result_i.hh"
+#include "VISU_Gen_i.hh"
 
 #include "VISU_Actor.h"
 #include "VISU_ScalarMapAct.h"
@@ -61,6 +62,7 @@ QtxValue VisuGUI_Selection::param( const int ind, const QString& p ) const
     else if ( p == "hasActor"       ) val = QtxValue( hasActor( ind ) );
     else if ( p == "isShading"      ) val = QtxValue( isShading( ind ) );
     else if ( p == "isScalarMapAct" ) val = QtxValue( isScalarMapAct( ind ) );
+    else if ( p == "isVisuComponent") val = QtxValue( isVisuComponent( ind ) );
   }
 
   return val;
@@ -355,3 +357,17 @@ QString VisuGUI_Selection::isScalarMapAct( const int ind ) const
 
   return aResStr;
 }
+
+bool VisuGUI_Selection::isVisuComponent( const int ind ) const
+{
+  SalomeApp_Study* study = GetStudy();
+  if ( !study )
+    return false;
+  
+  _PTR(SObject) obj = study->studyDS()->FindObjectID( entry( ind ).latin1() );
+  CORBA::Object_var anObj = VISU::ClientSObjectToObject( obj );
+  if( CORBA::is_nil( anObj ) )
+    return false;
+
+  return dynamic_cast<VISU::VISU_Gen_i*>( VISU::GetServant( anObj ).in() );
+}
index 1a7ae957869474101fb55e231f90a828d97cd736..9476353d32dbc332f9278e76c53e373c45453f76 100644 (file)
@@ -59,6 +59,7 @@ private:
   QString          hasActor( const int ) const;
   QString          isShading( const int ) const;
   QString          isScalarMapAct( const int ) const;
+  bool             isVisuComponent( const int ) const;
 
 private:
   int              nbChild( const int, const bool ) const;