]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Task "Make the size of the selection area even bigger, especially for points"
authorvsv <vitaly.smetannikov@opencascade.com>
Thu, 16 Jun 2016 09:29:34 +0000 (12:29 +0300)
committervsv <vitaly.smetannikov@opencascade.com>
Thu, 16 Jun 2016 09:29:34 +0000 (12:29 +0300)
src/ModuleBase/ModuleBase_Preferences.cpp
src/XGUI/SHAPER.xml
src/XGUI/XGUI_Displayer.cpp

index d6355464715d20d8989775e3b28cff3c32979379..3a8d0badc1562fbe67f57f235c038ed68bafc6f5 100644 (file)
@@ -239,7 +239,7 @@ ModuleBase_PreferencesDlg::ModuleBase_PreferencesDlg(SUIT_ResourceMgr* theResurc
   createEditors();
 
   myPreferences->retrieve();
-  setMinimumSize(800, 200);
+  setMinimumSize(800, 220);
 }
 
 ModuleBase_PreferencesDlg::~ModuleBase_PreferencesDlg()
@@ -302,6 +302,9 @@ void ModuleBase_PreferencesDlg::createViewerPage(int thePageId)
   myPreferences->addItem(tr("Vertices"), otherGroup, 
                          SUIT_PreferenceMgr::Bool,
                          ModuleBase_Preferences::VIEWER_SECTION, "vertex-selection");
+
+  myPreferences->addItem(tr("Vertex selection sensitivity"), otherGroup, SUIT_PreferenceMgr::Double,
+                         ModuleBase_Preferences::VIEWER_SECTION, "point-selection-sensitivity");
 }
 
 void ModuleBase_PreferencesDlg::createMenuPage(int thePageId)
index f43451026fd882f04df0337b83cd24453bd125a3..39e2b85c5121fb38c04c0816667b886b7541cd50 100644 (file)
@@ -14,6 +14,7 @@
     <parameter name="face-selection" value="true" />
     <parameter name="edge-selection" value="true" />
     <parameter name="vertex-selection" value="true" />
+    <parameter name="point-selection-sensitivity" value="20" />
   </section>
   <section name="Menu" >
     <!-- Menu bar preferences -->
index 851f977a1036ddbe49a6b1016900b789321c0b87..da86ce04feedb5226d81094617b6ef7c719d04fb 100644 (file)
 #include <ModuleBase_Tools.h>
 #include <ModuleBase_IModule.h>
 #include <ModuleBase_ViewerPrs.h>
+#include <ModuleBase_Preferences.h>
 
 #include <GeomAPI_Shape.h>
 #include <GeomAPI_IPresentable.h>
 #include <GeomAPI_ICustomPrs.h>
 
+#include <SUIT_ResourceMgr.h>
+
 #include <AIS_InteractiveContext.hxx>
 #include <AIS_LocalContext.hxx>
 #include <AIS_ListOfInteractive.hxx>
@@ -240,15 +243,6 @@ bool XGUI_Displayer::display(ObjectPtr theObject, AISObjectPtr theAIS,
 
     emit objectDisplayed(theObject, theAIS);
     activate(anAISIO, myActiveSelectionModes, theUpdateViewer);
-    // the fix from VPA for more suitable selection of sketcher lines
-    if(anAISIO->Width() > 1) {
-      for(int aModeIdx = 0; aModeIdx < myActiveSelectionModes.length(); ++aModeIdx) {
-        int aMode = myActiveSelectionModes.value(aModeIdx);
-        double aPrecision = (aMode == getSelectionMode(TopAbs_VERTEX))? 20 : 
-                                                    (anAISIO->Width() + 2);
-        aContext->SetSelectionSensitivity(anAISIO, aMode, aPrecision);
-      }
-    }
   } 
   if (theUpdateViewer)
     updateViewer();
@@ -587,13 +581,6 @@ void XGUI_Displayer::activateObjects(const QIntList& theModes, const QObjectPtrL
     if (activate(anAISIO, myActiveSelectionModes, false))
       isActivationChanged = true;
   }
-  if (!aTrihedron.IsNull()) {
-    foreach(int aMode, myActiveSelectionModes)
-      aContext->SetSelectionSensitivity(aTrihedron, aMode, 20);
-  }
-  // VSV It seems that there is no necessity to update viewer on activation
-  //if (theUpdateViewer && isActivationChanged)
-  //  updateViewer();
 }
 
 bool XGUI_Displayer::isActive(ObjectPtr theObject) const
@@ -910,6 +897,12 @@ void XGUI_Displayer::activateAIS(const Handle(AIS_InteractiveObject)& theIO,
     } else
       aContext->Activate(theIO, theMode, false);
 
+    // the fix from VPA for more suitable selection of sketcher lines
+    double aPrecision = theIO->Width() + 2;
+    if (theMode == getSelectionMode(TopAbs_VERTEX)) 
+      aPrecision = ModuleBase_Preferences::resourceMgr()->doubleValue("Viewer", "point-selection-sensitivity", 20);
+    aContext->SetSelectionSensitivity(theIO, theMode, aPrecision);
+
     ModuleBase_Tools::selectionInfo(aContext, "XGUI_Displayer::activateAIS -- Activate");
 
 #ifdef DEBUG_ACTIVATE_AIS