From d272ad908974d41367d0d5750a400ffa1318dadf Mon Sep 17 00:00:00 2001 From: drochalo Date: Fri, 19 Jan 2024 12:32:34 +0000 Subject: [PATCH] 0033575: Visualization - Volume selection of labels add repeated instances of the same object to selection list. Modified logic to add selectable object in SelectMgr_ViewerSelector::checkOverlap. --- src/SelectMgr/SelectMgr_ViewerSelector.cxx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/SelectMgr/SelectMgr_ViewerSelector.cxx b/src/SelectMgr/SelectMgr_ViewerSelector.cxx index 42c8028fba..c0651484ac 100644 --- a/src/SelectMgr/SelectMgr_ViewerSelector.cxx +++ b/src/SelectMgr/SelectMgr_ViewerSelector.cxx @@ -296,7 +296,24 @@ void SelectMgr_ViewerSelector::checkOverlap (const Handle(Select3D_SensitiveEnti { aCriterion.NbOwnerMatches = 1; updatePoint3d (aCriterion, aPickResult, theEntity, theInversedTrsf, theMgr); - mystored.Add (anOwner, aCriterion); + Standard_Boolean anExists = Standard_False; + for (Standard_Integer aStoredIter = 1; aStoredIter <= mystored.Extent(); ++aStoredIter) + { + const SelectMgr_SortCriterion& aSearchCriterion = mystored.FindFromIndex (aStoredIter); + const Handle(SelectMgr_EntityOwner)& aSearchOwner = aSearchCriterion.Entity->OwnerId(); + Handle(SelectMgr_SelectableObject) aSearchSelectable = !aSearchOwner.IsNull() ? aSearchOwner->Selectable() : Handle(SelectMgr_SelectableObject)(); + if (!aSearchSelectable.IsNull() && !aSelectable.IsNull()) + { + if (aSearchSelectable == aSelectable) + { + anExists = Standard_True; + } + } + } + if(!anExists) + { + mystored.Add (anOwner, aCriterion); + } } }