]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Set Change color as a concurrent operation which has to be done in transaction
authorvsv <vitaly.smetannikov@opencascade.com>
Thu, 22 Oct 2015 14:56:27 +0000 (17:56 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Thu, 22 Oct 2015 14:56:27 +0000 (17:56 +0300)
src/XGUI/XGUI_Workshop.cpp

index 184cafe058120277560f5f67eb2417e2c133f44e..6a988677a4aeb4ec1eeab0aae96bf587d1b8d188 100644 (file)
@@ -1503,6 +1503,7 @@ void setColor(ResultPtr theResult, const std::vector<int>& theColor)
 //**************************************************************
 void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects)
 {
+
   AttributeIntArrayPtr aColorAttr;
   // 1. find the current color of the object. This is a color of AIS presentation
   // The objects are iterated until a first valid color is found 
@@ -1529,6 +1530,8 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects)
   if (aColor.size() != 3)
     return;
 
+  if (!abortAllOperations())
+  return; 
   // 2. show the dialog to change the value
   XGUI_ColorDialog* aDlg = new XGUI_ColorDialog(mainWindow());
   aDlg->setColor(aColor);
@@ -1541,11 +1544,8 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects)
 
   // 3. abort the previous operation and start a new one
   SessionPtr aMgr = ModelAPI_Session::get();
-  bool aWasOperation = aMgr->isOperation(); // keep this value
-  if (!aWasOperation) {
-    QString aDescription = contextMenuMgr()->action("COLOR_CMD")->text();
-    aMgr->startOperation(aDescription.toStdString());
-  }
+  QString aDescription = contextMenuMgr()->action("COLOR_CMD")->text();
+  aMgr->startOperation(aDescription.toStdString());
 
   // 4. set the value to all results
   std::vector<int> aColorResult = aDlg->getColor();
@@ -1561,8 +1561,7 @@ void XGUI_Workshop::changeColor(const QObjectPtrList& theObjects)
       setColor(aResult, !isRandomColor ? aColorResult : aDlg->getRandomColor());
     }
   }
-  if (!aWasOperation)
-    aMgr->finishOperation();
+  aMgr->finishOperation();
   updateCommandStatus();
 }