]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Issue #389 Undo/redo problem on sketch line creation
authornds <natalia.donis@opencascade.com>
Thu, 29 Jan 2015 10:47:28 +0000 (13:47 +0300)
committernds <natalia.donis@opencascade.com>
Thu, 29 Jan 2015 10:47:28 +0000 (13:47 +0300)
Activate object even if it can not be shaded. A sketch line sub-feature. Undo/Redo.

src/XGUI/XGUI_Displayer.cpp
src/XGUI/XGUI_Displayer.h

index b68482a9dfb77b2f0936225be42c61327d596213..74ba0b5a3696c01966196da58844c127854492e6 100644 (file)
@@ -41,7 +41,8 @@
 
 const int MOUSE_SENSITIVITY_IN_PIXEL = 10;  ///< defines the local context mouse selection sensitivity
 
-//#ifdef DEBUG_DISPLAY
+//#define DEBUG_DISPLAY
+//#define DEBUG_ACTIVATE
 
 // Workaround for bug #25637
 void displayedObjects(const Handle(AIS_InteractiveContext)& theAIS, AIS_ListOfInteractive& theList)
@@ -168,7 +169,9 @@ void XGUI_Displayer::display(ObjectPtr theObject, AISObjectPtr theAIS,
       activateObjects(myActiveSelectionModes);
       myWorkshop->selector()->setSelectedOwners(aSelectedOwners, false);
     }
-  }
+    else
+      activateObjects(myActiveSelectionModes);
+ }
   if (isUpdateViewer)
     updateViewer();
 }
@@ -254,13 +257,30 @@ void XGUI_Displayer::deactivate(ObjectPtr theObject)
   }
 }
 
-void XGUI_Displayer::activate(ObjectPtr theFeature)
+/*void XGUI_Displayer::activate(ObjectPtr theFeature)
 {
   activate(theFeature, myActiveSelectionModes);
 }
 
 void XGUI_Displayer::activate(ObjectPtr theObject, const QIntList& theModes)
 {
+#ifdef DEBUG_ACTIVATE
+    FeaturePtr aFeature = ModelAPI_Feature::feature(theObject);
+
+    if (aFeature.get() != NULL) {
+      QIntList aModes;
+      getModesOfActivation(theObject, aModes);
+
+
+      qDebug(QString("activate feature: %1, theModes: %2, myActiveSelectionModes: %3, getModesOf: %4").
+        arg(aFeature->data()->name().c_str()).
+        arg(theModes.size()).
+        arg(myActiveSelectionModes.size()).
+        arg(aModes.size()).toStdString().c_str());
+    }
+#endif
+
+
   if (isVisible(theObject)) {
     Handle(AIS_InteractiveContext) aContext = AISContext();
     if (aContext.IsNull())
@@ -281,7 +301,7 @@ void XGUI_Displayer::activate(ObjectPtr theObject, const QIntList& theModes)
       aContext->Activate(anAIS);
     }
   }
-}
+}*/
 
 void XGUI_Displayer::getModesOfActivation(ObjectPtr theObject, QIntList& theModes)
 {
@@ -307,6 +327,12 @@ void XGUI_Displayer::getModesOfActivation(ObjectPtr theObject, QIntList& theMode
 
 void XGUI_Displayer::activateObjects(const QIntList& theModes)
 {
+#ifdef DEBUG_ACTIVATE
+  qDebug(QString("activate all features: theModes: %2, myActiveSelectionModes: %3").
+    arg(theModes.size()).
+    arg(myActiveSelectionModes.size()).
+    toStdString().c_str());
+#endif
   // In order to avoid doblications of selection modes
   QIntList aNewModes;
   foreach (int aMode, theModes) {
index b917e55eb6e70e314d2a54b0700f6ad3738885f1..c1aded1faf268d1b5419f04e59fa129c8f447ef9 100644 (file)
@@ -139,7 +139,7 @@ class XGUI_EXPORT XGUI_Displayer
   /// Activates the given object (it can be selected)
   /// \param theObject object to activate
   /// \param theModes - modes on which it has to be activated (can be empty)
-  void activate(ObjectPtr theObject, const QIntList& theModes);
+  //void activate(ObjectPtr theObject, const QIntList& theModes);
 
   /// Returns the modes of activation
   /// \param theObject the feature or NULL if it not visualized
@@ -148,7 +148,7 @@ class XGUI_EXPORT XGUI_Displayer
 
   /// Activates the given object with default modes
   /// \param theObject object to activate
-  void activate(ObjectPtr theObject);
+  //void activate(ObjectPtr theObject);
 
   /// Returns true if the given object can be selected
   /// \param theObject object to check