Code

Also consider path nodes for snapping
authordvlierop2 <dvlierop2@users.sourceforge.net>
Wed, 21 Nov 2007 19:23:55 +0000 (19:23 +0000)
committerdvlierop2 <dvlierop2@users.sourceforge.net>
Wed, 21 Nov 2007 19:23:55 +0000 (19:23 +0000)
src/selection.cpp
src/seltrans.cpp
src/sp-item-group.cpp

index e4c628d9e83df79df803682985e01b32e00e9184..68a9a2cd92e719ebd151cbbcb78725a113452743 100644 (file)
@@ -369,20 +369,13 @@ NR::Maybe<NR::Point> Selection::center() const {
 
 /**
  * Compute the list of points in the selection that are to be considered for snapping.
- * This includes all special points of each item in the selection, except path nodes
  */
 std::vector<NR::Point> Selection::getSnapPoints(bool includeItemCenter) const {
     GSList const *items = const_cast<Selection *>(this)->itemList();
     std::vector<NR::Point> p;
     for (GSList const *iter = items; iter != NULL; iter = iter->next) {
-        // getSnapPoints() is only being used in the selector tool, which should
-        // not snap path nodes. Only the node tool should snap those.
         SPItem *this_item = SP_ITEM(iter->data);
-        if (!SP_IS_PATH(this_item)) {
-            // Only snap if we don't have a path at hand
-            // (Same check occurs in sp-item-group)
-            sp_item_snappoints(this_item, false, SnapPointsIter(p));
-        }
+        sp_item_snappoints(this_item, false, SnapPointsIter(p));
         //Include the transformation origin for snapping
         //For a group only the group's origin is considered
         if (includeItemCenter) {
index 512d2c0ca30e3d6c04fcf1aba7e950d4a7004d46..785cf7d60f3f8dc0fc233aa13ffcece98f7ee25c 100644 (file)
@@ -259,18 +259,17 @@ void Inkscape::SelTrans::grab(NR::Point const &p, gdouble x, gdouble y, bool sho
 
     _point = p;
 
-    // The selector tool should snap the bbox and the special snappoints, but not path nodes
+    // The selector tool should snap the bbox, special snappoints, and path nodes
     // (The special points are the handles, center, rotation axis, font baseline, ends of spiral, etc.)
 
     // First, determine the bounding box for snapping ...
     _bbox = selection->bounds(_snap_bbox_type);
     _approximate_bbox = selection->bounds(SPItem::APPROXIMATE_BBOX); // Used for correctly scaling the strokewidth
 
-
-    // Next, get all special points for snapping
+    // Next, get all points to consider for snapping
     SnapManager const &m = _desktop->namedview->snap_manager;
-    _snap_points = selection->getSnapPoints(m.getIncludeItemCenter()); // Excludes path nodes
-    std::vector<NR::Point> snap_points_hull = selection->getSnapPointsConvexHull(); // Includes path nodes
+    _snap_points = selection->getSnapPoints(m.getIncludeItemCenter());
+    std::vector<NR::Point> snap_points_hull = selection->getSnapPointsConvexHull();
     if (_snap_points.size() > 100) {
         /* Snapping a huge number of nodes will take way too long, so limit the number of snappable nodes
         An average user would rarely ever try to snap such a large number of nodes anyway, because
index f1035e9eef6028a234a0eac680c841f90ed6808a..cabc7b26a754e173cb6b9c2dee5eb37443e58052 100644 (file)
@@ -298,9 +298,7 @@ static void sp_group_snappoints (SPItem const *item, SnapPointsIter p)
             o != NULL;
             o = SP_OBJECT_NEXT(o))
        {
-               if (SP_IS_ITEM(o) && !SP_IS_PATH(o)) {
-            // getSnapPoints() and sp_group_snappoints are only being used in the selector tool,
-            // which should not snap path nodes. Only the node tool should snap those.
+               if (SP_IS_ITEM(o)) {
             sp_item_snappoints(SP_ITEM(o), false, p);
                }
        }