]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
A fix for the "Abort" operation bug. If a control with a validator is active, abort...
authornds <natalia.donis@opencascade.com>
Wed, 20 May 2015 13:28:21 +0000 (16:28 +0300)
committernds <natalia.donis@opencascade.com>
Wed, 20 May 2015 13:28:21 +0000 (16:28 +0300)
Scenario: create a sketch, start creation of an extrusion, select a sketch, select an orthogonal plane, abort(selector is active). Crash

src/ModuleBase/ModuleBase_IPropertyPanel.h
src/ModuleBase/ModuleBase_Operation.cpp
src/XGUI/XGUI_PropertyPanel.h

index fe8a110e00e3577fa5c3fdd5a9be7cd909dfe74d..3a18c858b3b0c7d5031ca2daf8cacd9bcb080844 100644 (file)
@@ -35,6 +35,9 @@ public:
   /// Returns all property panel's widget created by WidgetFactory
   virtual const QList<ModuleBase_ModelWidget*>& modelWidgets() const = 0;
 
+  /// Removes all widgets in the widget area of the property panel
+  virtual void cleanContent() = 0;
+
   /// Editing mode depends on mode of current operation. This value is defined by it.
   /// \param isEditing state of editing mode flag
   virtual void setEditingMode(bool isEditing) { myIsEditing = isEditing; }
index d877fa3ab0b4facb9842506f18a16ffca8254795..ae623079c0d85b9071b6a3c6d2dcfdb0df5883ac 100644 (file)
@@ -189,6 +189,9 @@ void ModuleBase_Operation::abort()
   emit aborted();
 
   stopOperation();
+  // is is necessary to deactivate current widgets before the model operation is aborted
+  // because abort removes the feature and activated filters should not check it
+  propertyPanel()->cleanContent();
 
   ModelAPI_Session::get()->abortOperation();
   emit stopped();
index cc9ba8aeb45453793c1b5cf1f08d4e9c64cedfa1..bc0934af53f26d7cc31e7aeecf190622bff259da 100644 (file)
@@ -62,7 +62,7 @@ Q_OBJECT
   virtual const QList<ModuleBase_ModelWidget*>& modelWidgets() const;
 
   /// Removes all widgets in the widget area of the property panel
-  void cleanContent();
+  virtual void cleanContent();
 
   /// Returns currently active widget
   virtual ModuleBase_ModelWidget* activeWidget() const { return myActiveWidget; }