+ aWorkshop->updateCommandStatus();
+
+ // Update displayed objects in order to update active color
+ XGUI_Displayer* aDisplayer = aWorkshop->displayer();
+ QObjectPtrList aObjects = aDisplayer->displayedObjects();
+ bool aHidden;
+ foreach(ObjectPtr aObj, aObjects) {
+ //TODO: replace by redisplay event.
+ aHidden = !aObj->data() || !aObj->data()->isValid() ||
+ aObj->isDisabled() || (!aObj->isDisplayed());
+ if (!aHidden)
+ aDisplayer->redisplay(aObj, false);
+ }
+ aDisplayer->updateViewer();
+ }
+}
+
+void PartSet_Module::onTreeViewDoubleClick(const QModelIndex& theIndex)
+{
+ if (myWorkshop->currentOperation()) // Do not change activation of parts if an operation active
+ return;
+ SessionPtr aMgr = ModelAPI_Session::get();
+ if (!theIndex.isValid()) {
+ aMgr->setActiveDocument(aMgr->moduleDocument());
+ return;
+ }
+ if (theIndex.column() != 0) // Use only first column
+ return;
+#ifdef ModuleDataModel
+ ObjectPtr aObj = myDataModel->object(theIndex);
+#else
+ XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
+ XGUI_Workshop* aWorkshop = aConnector->workshop();
+ XGUI_DataModel* aDataModel = aWorkshop->objectBrowser()->dataModel();
+ // De not use non editable Indexes
+ if ((aDataModel->flags(theIndex) & Qt::ItemIsSelectable) == 0)
+ return;
+ ObjectPtr aObj = aDataModel->object(theIndex);
+#endif
+
+ ResultPartPtr aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aObj);
+ if (!aPart.get()) { // Probably this is Feature
+ FeaturePtr aPartFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aObj);
+ if (aPartFeature.get() && (aPartFeature->getKind() == PartSetPlugin_Part::ID())) {
+ aPart = std::dynamic_pointer_cast<ModelAPI_ResultPart>(aPartFeature->firstResult());
+ }
+ }
+ if (aPart.get()) { // if this is a part
+ if (aPart->partDoc() == aMgr->activeDocument()) {
+ myMenuMgr->activatePartSet();
+ } else {
+ aPart->activate();
+ }