-// Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+// Copyright (C) 2014-2019 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
//
-// See http://www.salome-platform.org/ or
-// email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
#include "XGUI_Selection.h"
#include "XGUI_ViewerProxy.h"
#include "XGUI_ObjectsBrowser.h"
+#ifndef HAVE_SALOME
+#include <AppElements_ViewCube.h>
+#endif
+
#include "ModuleBase_BRepOwner.h"
#include "ModuleBase_ResultPrs.h"
#include "ModuleBase_ViewerPrs.h"
void XGUI_Selection::fillPresentation(ModuleBase_ViewerPrsPtr& thePrs,
const Handle(SelectMgr_EntityOwner)& theOwner) const
{
- thePrs->setOwner(theOwner);
Handle(AIS_InteractiveObject) anIO =
Handle(AIS_InteractiveObject)::DownCast(theOwner->Selectable());
+#ifndef HAVE_SALOME
+ Handle(AppElements_ViewCube) aCube = Handle(AppElements_ViewCube)::DownCast(anIO);
+ if (!aCube.IsNull())
+ return;
+#endif
+
+ thePrs->setOwner(theOwner);
thePrs->setInteractive(anIO);
// we should not check the appearance of this feature because there can be some selected shapes
// for one feature
Handle(StdSelect_BRepOwner) aBRO = Handle(StdSelect_BRepOwner)::DownCast(theOwner);
if( !aBRO.IsNull() && aBRO->HasShape() ) {
+ TopoDS_Shape aShape = aBRO->Shape();
+ Handle(ModuleBase_ResultPrs) aPrsObj =
+ Handle(ModuleBase_ResultPrs)::DownCast(aBRO->Selectable());
+ if (!aPrsObj.IsNull()) {
+ if (aPrsObj->isSubstituted()) {
+ if (aPrsObj->Shape().IsSame(aShape))
+ aShape = aPrsObj->originalShape();
+ }
+ }
// the located method is called in the context to obtain the shape by the SelectedShape()
// method, so the shape is located by the same rules
- TopoDS_Shape aShape = aBRO->Shape().Located (aBRO->Location() * aBRO->Shape().Location());
+ aShape = aShape.Located(aBRO->Location() * aShape.Location());
#ifdef BEFORE_TRIHEDRON_PATCH
#ifndef DEBUG_DELIVERY
if (aShape.IsNull())