X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_SelectionMgr.cpp;h=49bcdcbd375174e0c6ad221b217250cf38c26ad8;hb=4cb749258f33b7de231da5bb50140407c0599d30;hp=a4cf3bbcbd1f766e7ec1e897518294f8e7b78845;hpb=d4b0a5cb916f4eccf4a0bce02e43a54c7a67cb93;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_SelectionMgr.cpp b/src/XGUI/XGUI_SelectionMgr.cpp old mode 100755 new mode 100644 index a4cf3bbcb..49bcdcbd3 --- a/src/XGUI/XGUI_SelectionMgr.cpp +++ b/src/XGUI/XGUI_SelectionMgr.cpp @@ -1,4 +1,4 @@ -// 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 @@ -12,10 +12,9 @@ // // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "XGUI_SelectionMgr.h" @@ -41,6 +40,7 @@ #include #include #include +#include #include @@ -106,12 +106,12 @@ void XGUI_SelectionMgr::setSelectedOwners(const SelectMgr_IndexedMapOfOwner& the //************************************************************** void XGUI_SelectionMgr::onObjectBrowserSelection() { + myLastSelectionPlace = ModuleBase_ISelection::Browser; QList aSelectedPrs = myWorkshop->selector()->selection()->getSelected(ModuleBase_ISelection::Browser); XGUI_Displayer* aDisplayer = myWorkshop->displayer(); if (!myWorkshop->operationMgr()->hasOperation()) { - QList aTmpList = aSelectedPrs; ObjectPtr aObject; FeaturePtr aFeature; // Select all results of a selected feature in viewer @@ -120,30 +120,36 @@ void XGUI_SelectionMgr::onObjectBrowserSelection() if (aObject.get()) { aFeature = std::dynamic_pointer_cast(aObject); if (aFeature.get()) { - std::list allRes; - ModelAPI_Tools::allResults(aFeature, allRes); - for(std::list::iterator aRes = allRes.begin(); aRes != allRes.end(); aRes++) { - aSelectedPrs.append(std::shared_ptr( - new ModuleBase_ViewerPrs(*aRes, GeomShapePtr(), NULL))); + std::list allRes; + ModelAPI_Tools::allResults(aFeature, allRes); + std::list::iterator aRes; + for(aRes = allRes.begin(); aRes != allRes.end(); aRes++) { + aSelectedPrs.append(std::shared_ptr( + new ModuleBase_ViewerPrs(*aRes, GeomShapePtr(), NULL))); } } } } - aDisplayer->setSelected(aTmpList); - } else { - aDisplayer->setSelected(aSelectedPrs); } + aDisplayer->setSelected(aSelectedPrs); + myWorkshop->updateColorScaleVisibility(); emit selectionChanged(); } //************************************************************** void XGUI_SelectionMgr::onViewerSelection() { + myLastSelectionPlace = ModuleBase_ISelection::Viewer; QList aValues; Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext(); - if (!aContext.IsNull()) + if (!aContext.IsNull()) { aValues = selection()->getSelected(ModuleBase_ISelection::Viewer); - + // Update is necessary for OCCT 7.4.0: when it is clears selection it doesn't updates viewer +#if OCC_VERSION_HEX == 0x070400 + if (aValues.isEmpty()) + aContext->UpdateCurrentViewer(); +#endif + } QObjectPtrList anObjects; convertToObjectBrowserSelection(aValues, anObjects); myWorkshop->objectBrowser()->setObjectsSelected(anObjects);