//#define DEBUG_ACTIVATE
//#define DEBUG_FEATURE_REDISPLAY
//#define DEBUG_SELECTION_FILTERS
+//#define DEBUG_USE_CLEAR_OUTDATED_SELECTION
// Workaround for bug #25637
void displayedObjects(const Handle(AIS_InteractiveContext)& theAIS, AIS_ListOfInteractive& theList)
AISObjectPtr anObj = myResult2AISObjectMap[theObject];
Handle(AIS_InteractiveObject) anAIS = anObj->impl<Handle(AIS_InteractiveObject)>();
aContext->Deactivate(anAIS);
+#ifdef DEBUG_USE_CLEAR_OUTDATED_SELECTION
+ aContext->LocalContext()->ClearOutdatedSelection(anAIS, true);
+ updateViewer();
+#endif
}
}
for(aLIt.Initialize(aPrsList); aLIt.More(); aLIt.Next()){
anAISIO = aLIt.Value();
aContext->Deactivate(anAISIO);
+#ifdef DEBUG_USE_CLEAR_OUTDATED_SELECTION
+ aContext->LocalContext()->ClearOutdatedSelection(anAISIO, true);
+ updateViewer();
+#endif
}
}
if (isVisible(aResult)) {
AISObjectPtr anObj = myResult2AISObjectMap[aResult];
Handle(AIS_InteractiveObject) anAIS = anObj->impl<Handle(AIS_InteractiveObject)>();
- if (!anAIS.IsNull())
- aContext->SetSelected(anAIS, false);
+ if (!anAIS.IsNull()) {
+ // The methods are replaced in order to provide multi-selection, e.g. restore selection
+ // by activating multi selector widget. It also gives an advantage that the multi
+ // selection in OB gives multi-selection in the viewer
+ //aContext->SetSelected(anAIS, false);
+ aContext->AddOrRemoveSelected(anAIS, false);
+ }
}
}
} else {
return aWasEnabled;
}
-void XGUI_Displayer::updateViewer()
+void XGUI_Displayer::updateViewer() const
{
Handle(AIS_InteractiveContext) aContext = AISContext();
if (!aContext.IsNull() && myEnableUpdateViewer)
aContext->ActivatedModes(theIO, aTColModes);
TColStd_ListIteratorOfListOfInteger itr( aTColModes );
QIntList aModesActivatedForIO;
+ //bool isDeactivated = false;
for (; itr.More(); itr.Next() ) {
Standard_Integer aMode = itr.Value();
if (!theModes.contains(aMode)) {
qDebug(QString("deactivate: %1").arg(aMode).toStdString().c_str());
#endif
aContext->Deactivate(theIO, aMode);
+ //isDeactivated = true;
}
else {
aModesActivatedForIO.append(aMode);
#endif
}
}
+#ifdef DEBUG_USE_CLEAR_OUTDATED_SELECTION
+ if (isDeactivated) {
+ aContext->LocalContext()->ClearOutdatedSelection(theIO, true);
+ updateViewer();
+ }
+#endif
// loading the interactive object allowing the decomposition
if (aTColModes.IsEmpty())
aContext->Load(theIO, -1, true);