Salome HOME
Fix for the issue #2401
[modules/shaper.git] / src / PartSet / PartSet_SketcherReentrantMgr.cpp
index 0e4aebf79659148efb77fa162fe1e4e4f941771d..b0d19549b987d7aab87e7248646d2a6fd2642ef9 100644 (file)
@@ -333,9 +333,10 @@ void PartSet_SketcherReentrantMgr::setReentrantPreSelection(
 //  ModuleBase_ModelWidget* aFirstWidget = aModule->activeWidget();
 //  ModuleBase_IPropertyPanel* aPanel = aModule->currentOperation()->propertyPanel();
 //  if (aFirstWidget != aPanel->activeWidget()) {
-//    ModuleBase_WidgetSelector* aWSelector = dynamic_cast<ModuleBase_WidgetSelector*>(aFirstWidget);
+//    ModuleBase_WidgetSelector* aWSelector = dynamic_cast<ModuleBase_WidgetSelector*>
+//      (aFirstWidget);
 //    if (aWSelector) {
-//      myWorkshop->selectionActivate()->activateSelectionAndFilters(aWSelector);
+//      myWorkshop->selectionActivate()->updateSelectionModesAndFilters(aWSelector);
 //    }
 //  }
 //}
@@ -364,15 +365,20 @@ void PartSet_SketcherReentrantMgr::onNoMoreWidgets(const std::string& thePreviou
     return;
 
   if (aFOperation && module()->sketchMgr()->isNestedSketchOperation(aFOperation)) {
-    bool isStarted = false;
-    if (!module()->sketchMgr()->sketchSolverError()) {
-      if (myRestartingMode != RM_Forbided) {
-        myRestartingMode = RM_LastFeatureUsed;
-        isStarted = startInternalEdit(thePreviousAttributeID);
+    if (aFOperation->isNeedToBeAborted()) {
+      aFOperation->abort();
+    }
+    else {
+      bool isStarted = false;
+      if (!module()->sketchMgr()->sketchSolverError()) {
+        if (myRestartingMode != RM_Forbided) {
+          myRestartingMode = RM_LastFeatureUsed;
+          isStarted = startInternalEdit(thePreviousAttributeID);
+        }
       }
+      if (!isStarted)
+        aFOperation->commit();
     }
-    if (!isStarted)
-      aFOperation->commit();
   }
 }
 
@@ -659,13 +665,8 @@ void PartSet_SketcherReentrantMgr::deleteInternalFeature()
   std::cout << "PartSet_SketcherReentrantMgr::deleteInternalFeature: "
             << myInternalFeature->data()->name() << std::endl;
 #endif
-  if (myInternalActiveWidget) {
-    ModuleBase_WidgetSelector* aWSelector =
-      dynamic_cast<ModuleBase_WidgetSelector*>(myInternalActiveWidget);
-    if (aWSelector)
-      myWorkshop->selectionActivate()->activateSelectionAndFilters(aWSelector);
+  if (myInternalActiveWidget)
     myInternalActiveWidget = 0;
-  }
   delete myInternalWidget;
   myInternalWidget = 0;