]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
A fix for the next case:
authornds <natalia.donis@opencascade.com>
Mon, 25 May 2015 13:02:42 +0000 (16:02 +0300)
committernds <natalia.donis@opencascade.com>
Mon, 25 May 2015 13:02:42 +0000 (16:02 +0300)
preselection of a point, start a line creation. A line is created with the second point in the origin.
The same problem is for the preselection in the translation operation.

src/ModuleBase/ModuleBase_Operation.cpp
src/ModuleBase/ModuleBase_WidgetMultiSelector.cpp

index ae623079c0d85b9071b6a3c6d2dcfdb0df5883ac..d688e90aab52c4f9500caac0ad8b8e532fc79123 100644 (file)
@@ -274,11 +274,14 @@ void ModuleBase_Operation::activateByPreselection()
     aFilledWgt = aWgt;
   }*/
 
-  // 3. activate the next obligatory widget
-  myPropertyPanel->activateNextWidget(aFilledWgt);
+  // 3. a signal should be emitted before the next widget activation
+  // because, the activation of the next widget will give a focus to the widget. As a result
+  // the value of the widget is initialized. And commit may happens until the value is entered.
   if (aFilledWgt)
     emit activatedByPreselection();
 
+  // 4. activate the next obligatory widget
+  myPropertyPanel->activateNextWidget(aFilledWgt);
 }
 
 void ModuleBase_Operation::setParentFeature(CompositeFeaturePtr theParent)
index 976972a6077f72bfa81309459694cb10864464e7..6ee99f6cf82baf476267db07c1e8b81a8a43f519 100644 (file)
@@ -230,7 +230,6 @@ bool ModuleBase_WidgetMultiSelector::setSelection(const QList<ModuleBase_ViewerP
   bool isDone = false;
   for (int i = thePosition; i < theValues.size(); i++) {
     ModuleBase_ViewerPrs aValue = theValues[i];
-    thePosition++;
     bool aProcessed = false;
     if (isValidSelection(aValue)) {
       aProcessed = setSelectionCustom(aValue);
@@ -240,6 +239,8 @@ bool ModuleBase_WidgetMultiSelector::setSelection(const QList<ModuleBase_ViewerP
     // when an object, which do not satisfy the validating process, stop set selection
     if (!aProcessed)
       break;
+    else
+      thePosition++;
   }
   if (isDone) {
     updateObject(myFeature);