Salome HOME
updated copyright message
[modules/shaper.git] / src / ModuleBase / ModuleBase_ViewerFilters.cpp
index 70b885f451047bdd8fe1d487169c19824e0a2443..3ad46c7240aa7433f10f02946f3a107357a0735f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2023  CEA, EDF
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -20,6 +20,9 @@
 #include "ModuleBase_ViewerFilters.h"
 #include "ModuleBase_IWorkshop.h"
 #include "ModuleBase_IModule.h"
+#include "ModuleBase_Operation.h"
+#include "ModuleBase_IPropertyPanel.h"
+#include "ModuleBase_ModelWidget.h"
 
 #include <ModelAPI_Session.h>
 #include <ModelAPI_Document.h>
@@ -76,7 +79,13 @@ Standard_Boolean ModuleBase_ShapeDocumentFilter::IsOk(
     if (aObj) {
       DocumentPtr aDoc = aObj->document();
       SessionPtr aMgr = ModelAPI_Session::get();
-      aValid = (aDoc == aMgr->activeDocument() || aDoc == aMgr->moduleDocument());
+
+      if (anOperation->propertyPanel()) {
+        ModuleBase_ModelWidget* aWidget = anOperation->propertyPanel()->activeWidget();
+        if (aWidget && aWidget->canUseExternalParts())
+          return Standard_True;
+      }
+      return (aDoc == aMgr->activeDocument() || aDoc == aMgr->moduleDocument());
     }
     else {
       // This object is not controlled by the filter
@@ -149,6 +158,8 @@ Standard_Boolean ModuleBase_ShapeInPlaneFilter::IsOk(
                 case Prs3d_DP_ZAxis:
                   aDir = anAxis.Direction();
                   break;
+                default: // [to avoid compilation warning]
+                  break;
                 }
                 gp_Lin aLine(aTrihedron->Component()->Location(), aDir);
                 return aPlane.Contains(aLine, Precision::Confusion(), Precision::Angular());