]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Construction elements are auxiliary entities:
authornds <natalia.donis@opencascade.com>
Thu, 5 Mar 2015 11:39:53 +0000 (14:39 +0300)
committernds <natalia.donis@opencascade.com>
Thu, 5 Mar 2015 11:39:53 +0000 (14:39 +0300)
The regression: contour is not closed. We need to check whether there is at least one obligatory left widgets.

src/ModuleBase/ModuleBase_ModelWidget.h
src/PartSet/PartSet_Module.cpp

index 80b1773a327d8c6a93ce7531d01f63619f90619c..87112716e66df14208c74b1a0d4f988cf2f3409e 100644 (file)
@@ -60,6 +60,10 @@ Q_OBJECT
   /// \return the boolean result
   std::string getDefaultValue() const { return myDefaultValue; }
 
+  /// Returns true, if the obligatory value of the widget is not defined in the XML or has true value
+  /// \return the boolean result
+  bool isObligatory() const { return myIsObligatory; }
+
   /// Defines if it is supposed that the widget should interact with the viewer.
   virtual bool isViewerSelector() { return false; }
 
index 39520d8af82f766a3ffe29a98001cbc0a0d531ca..6758f5722532ae092e786d784638e28695cb4b83 100644 (file)
@@ -431,10 +431,19 @@ void PartSet_Module::onVertexSelected()
   if (aOperation->id().toStdString() == SketchPlugin_Line::ID()) {
     /// If last line finished on vertex the lines creation sequence has to be break
     ModuleBase_IPropertyPanel* aPanel = aOperation->propertyPanel();
+    ModuleBase_ModelWidget* anActiveWidget = aPanel->activeWidget();
     const QList<ModuleBase_ModelWidget*>& aWidgets = aPanel->modelWidgets();
-    if (aWidgets.last() == aPanel->activeWidget()) {
-      myRestartingMode = RM_Forbided;
+    QList<ModuleBase_ModelWidget*>::const_iterator anIt = aWidgets.begin(), aLast = aWidgets.end();
+    bool aFoundWidget = false;
+    bool aFoundNonObligatory = false;
+    for (; anIt != aLast && !aFoundNonObligatory; anIt++) {
+      aFoundWidget = aFoundWidget || *anIt == anActiveWidget;
+      if (!aFoundWidget)
+        continue;
+      aFoundNonObligatory = !(*anIt)->isObligatory();
     }
+    if (!aFoundNonObligatory)
+      myRestartingMode = RM_Forbided;
   }
 }