+ // saves the owner value to the widget attribute
+ bool aValid = setSelectionCustom(theValue);
+
+ if (aValid)
+ // checks the attribute validity
+ aValid = isValidAttribute();
+
+ // restores the current values of the widget attribute
+ restoreAttributeValue(aValid);
+ aData->blockSendAttributeUpdated(false);
+ anAttribute->blockSetInitialized(isAttributeBlocked);
+ aLoop->activateFlushes(true);
+
+ // In particular case the results are deleted and called as redisplayed inside of this
+ // highlight-selection, to they must be flushed as soon as possible.
+ // Example: selection of group-vertices subshapes with shift pressend on body. Without
+ // these 4 lines below the application crashes because of left presentations on
+ // removed results still in the viewer.
+ static Events_ID aDeletedEvent = Events_Loop::eventByName(EVENT_OBJECT_DELETED);
+ static Events_ID aRedispEvent = Events_Loop::eventByName(EVENT_OBJECT_TO_REDISPLAY);
+ aLoop->flush(aDeletedEvent);
+ aLoop->flush(aRedispEvent);