1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-09 13:22:24 +03:00

Compare commits

...

1 Commits

Author SHA1 Message Date
kgv
84e8a5f881 0032829: Visualization - dynamic highlight results are not cleared by AIS_InteractiveContext::Redisplay()
AIS_InteractiveContext::RecomputeSelectionOnly() now removes old Owners of recomputed object from selection results.
vdisplay command now resets AIS_ViewController::ResetPreviousMoveTo() cache.
2022-02-11 16:35:44 +03:00
3 changed files with 19 additions and 3 deletions

View File

@@ -996,6 +996,7 @@ void AIS_InteractiveContext::RecomputePrsOnly (const Handle(AIS_InteractiveObjec
myMainVwr->Update();
}
}
//=======================================================================
//function : RecomputeSelectionOnly
//purpose :
@@ -1007,9 +1008,20 @@ void AIS_InteractiveContext::RecomputeSelectionOnly (const Handle(AIS_Interactiv
return;
}
mgrSelector->RecomputeSelection (theIO);
const Handle(AIS_GlobalStatus)* aStatus = myObjects.Seek (theIO);
if (aStatus != NULL)
{
if (!myLastPicked.IsNull()
&& myLastPicked->IsSameSelectable (theIO))
{
clearDynamicHighlight();
myLastPicked.Nullify();
}
unselectOwners (theIO);
}
mgrSelector->RecomputeSelection (theIO);
if (aStatus == NULL
|| theIO->DisplayStatus() != PrsMgr_DisplayStatus_Displayed)
{

View File

@@ -147,6 +147,7 @@ public: //! @name object display management
Standard_EXPORT void RemoveAll (const Standard_Boolean theToUpdateViewer);
//! Recomputes the seen parts presentation of the Object.
//! The object will be also unhighlighted and removed from selection.
//! If theAllModes equals true, all presentations are present in the object even if unseen.
Standard_EXPORT void Redisplay (const Handle(AIS_InteractiveObject)& theIObj,
const Standard_Boolean theToUpdateViewer,
@@ -159,13 +160,14 @@ public: //! @name object display management
const Standard_Boolean theToUpdateViewer);
//! Recomputes the displayed presentations, flags the others.
//! Doesn't update presentations.
//! Doesn't update selections.
Standard_EXPORT void RecomputePrsOnly (const Handle(AIS_InteractiveObject)& theIObj,
const Standard_Boolean theToUpdateViewer,
const Standard_Boolean theAllModes = Standard_False);
//! Recomputes the active selections, flags the others.
//! Doesn't update presentations.
//! The object will be also unhighlighted and removed from selection.
Standard_EXPORT void RecomputeSelectionOnly (const Handle(AIS_InteractiveObject)& anIObj);
//! Updates displayed interactive object by checking and recomputing its flagged as "to be recomputed" presentation and selection structures.

View File

@@ -5238,6 +5238,8 @@ static int VDisplay2 (Draw_Interpretor& theDI,
}
}
// invalidate picking cache
ViewerTest::CurrentEventManager()->ResetPreviousMoveTo();
return 0;
}