Handle(AIS_InteractiveContext) aContext = AISContext();
if (aContext.IsNull())
return;
- bool aToSelect = aContext->IsSelected(aAISIO);
aContext->Redisplay(aAISIO, false);
- // Restore selection state after redisplay
- if (aToSelect)
- aContext->SetSelected(aAISIO, false);
if (isUpdateViewer)
updateViewer();
}
void XGUI_Displayer::openLocalContext()
{
- Handle(AIS_InteractiveContext) aContext = AISContext();
+ Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
if (aContext.IsNull())
return;
// Open local context if there is no one
void XGUI_SelectionMgr::setSelectedOwners(const SelectMgr_IndexedMapOfOwner& theSelectedOwners,
bool isUpdateViewer)
{
+ SelectMgr_IndexedMapOfOwner aSelectedOwners;
+ selection()->selectedOwners(aSelectedOwners);
+
Handle(AIS_InteractiveContext) aContext = myWorkshop->viewer()->AISContext();
for (Standard_Integer i = 1, n = theSelectedOwners.Extent(); i <= n; i++) {
- aContext->AddOrRemoveSelected(theSelectedOwners(i), isUpdateViewer);
+ Handle(SelectMgr_EntityOwner) anOwner = theSelectedOwners(i);
+ if (aSelectedOwners.FindIndex(anOwner) > 0)
+ continue;
+
+ aContext->AddOrRemoveSelected(anOwner, isUpdateViewer);
}
}