]> SALOME platform Git repositories - modules/shaper.git/blobdiff - src/PartSet/PartSet_WidgetPoint2d.cpp
Salome HOME
Add tools
[modules/shaper.git] / src / PartSet / PartSet_WidgetPoint2d.cpp
index 60e826b4223c55649c23918418f4895e43d82b08..d94afa5a0dc5c10b0018a0e933bf2347e743a49b 100644 (file)
@@ -339,6 +339,8 @@ void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMous
           setPoint(aX, aY);
         }
         else {
+          if (getPoint2d(aView, aShape, aX, aY))
+            setPoint(aX, aY);
           setConstraintWith(aObject);
           emit vertexSelected();
           emit focusOutWidget(this);
@@ -357,8 +359,10 @@ void PartSet_WidgetPoint2D::onMouseRelease(ModuleBase_IViewWindow* theWnd, QMous
         // do not set a coincidence constraint in the attribute if the feature contains a point
         // with the same coordinates. It is important for line creation in order to do not set
         // the same constraints for the same points, oterwise the result line has zero length.
-        if (getPoint2d(aView, aShape, aX, aY))
+        if (getPoint2d(aView, aShape, aX, aY)) {
+          setPoint(aX, aY);
           PartSet_Tools::setConstraints(mySketch, feature(), attributeID(), aX, aY);
+        }
         else if (aShape.ShapeType() == TopAbs_EDGE) {
           if (MyFeaturesForCoincedence.contains(myFeature->getKind().c_str()))
             setConstraintWith(aObject);
@@ -440,12 +444,12 @@ bool PartSet_WidgetPoint2D::isFeatureContainsPoint(const FeaturePtr& theFeature,
   std::list<AttributePtr> anAttributes =
                                 myFeature->data()->attributes(GeomDataAPI_Point2D::typeId());
   std::list<AttributePtr>::iterator anIter = anAttributes.begin();
-  for(; anIter != anAttributes.end(); anIter++) {
+  for(; anIter != anAttributes.end() && !aPointIsFound; anIter++) {
     AttributePoint2DPtr aPoint2DAttribute =
       std::dynamic_pointer_cast<GeomDataAPI_Point2D>(*anIter);
     if (aPoint2DAttribute == aWidgetAttribute)
       continue;
-    if (aPoint2DAttribute.get()) {
+    if (aPoint2DAttribute.get() && aPoint2DAttribute->isInitialized()) {
       aPointIsFound = aPoint2DAttribute->pnt()->isEqual(aPnt2d);
     }
   }