diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2009-07-29 20:55:51 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2009-07-29 20:55:51 +0000 |
| commit | 2400be6dd81349d88a004ad61be6aac7772bf750 (patch) | |
| tree | 3f47b18238094ff0ed969a29518d7f44b0581451 /src/object-snapper.cpp | |
| parent | Fix for bug LP #383244 (patch by Hannes Hochreiner) (diff) | |
| download | inkscape-2400be6dd81349d88a004ad61be6aac7772bf750.tar.gz inkscape-2400be6dd81349d88a004ad61be6aac7772bf750.zip | |
Snap guides to intersections of curves too (see bug #405419)
(bzr r8361)
Diffstat (limited to 'src/object-snapper.cpp')
| -rw-r--r-- | src/object-snapper.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 5dd9350dc..aece2e9ec 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -296,6 +296,13 @@ void Inkscape::ObjectSnapper::_snapTranslatingGuideToNodes(SnappedConstraints &s // Iterate through all nodes, find out which one is the closest to this guide, and snap to it! _collectNodes(t, true); + // Although we won't snap to paths here (which would give us under constrained snaps) we can still snap to intersections of paths. + if (_snapmanager->snapprefs.getSnapToItemPath() || _snapmanager->snapprefs.getSnapToBBoxPath() || _snapmanager->snapprefs.getSnapToPageBorder()) { + _collectPaths(t, true); + _snapPaths(sc, t, p, SNAPSOURCE_GUIDE, true, NULL, NULL); + // The paths themselves should be discarded in findBestSnap(), as we should only snap to their intersections + } + SnappedPoint s; Geom::Coord tol = getSnapperTolerance(); @@ -683,7 +690,7 @@ void Inkscape::ObjectSnapper::guideFreeSnap(SnappedConstraints &sc, _findCandidates(sp_document_root(_snapmanager->getDocument()), &it, true, Geom::Rect(p, p), snap_dim, false, Geom::identity()); _snapTranslatingGuideToNodes(sc, Inkscape::SnapPreferences::SNAPPOINT_GUIDE, p, guide_normal); - // _snapRotatingGuideToNodes has not been implemented yet. + } // This method is used to snap the origin of a guide to nodes/paths, while dragging the origin along the guide @@ -707,7 +714,7 @@ void Inkscape::ObjectSnapper::guideConstrainedSnap(SnappedConstraints &sc, _findCandidates(sp_document_root(_snapmanager->getDocument()), &it, true, Geom::Rect(p, p), snap_dim, false, Geom::identity()); _snapTranslatingGuideToNodes(sc, Inkscape::SnapPreferences::SNAPPOINT_GUIDE, p, guide_normal); - // _snapRotatingGuideToNodes has not been implemented yet. + } /** @@ -734,7 +741,8 @@ bool Inkscape::ObjectSnapper::GuidesMightSnap() const // almost the same as This || (_snapmanager->snapprefs.getSnapModeBBox() && _snapmanager->snapprefs.getSnapToBBoxNode()) || (_snapmanager->snapprefs.getSnapModeBBox() && (_snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() || _snapmanager->snapprefs.getSnapBBoxMidpoints())) || (_snapmanager->snapprefs.getSnapModeNode() && (_snapmanager->snapprefs.getSnapLineMidpoints() || _snapmanager->snapprefs.getSnapObjectMidpoints())) - || (_snapmanager->snapprefs.getSnapModeNode() && _snapmanager->snapprefs.getIncludeItemCenter()); + || (_snapmanager->snapprefs.getSnapModeNode() && _snapmanager->snapprefs.getIncludeItemCenter()) + || (_snapmanager->snapprefs.getSnapModeNode() && (_snapmanager->snapprefs.getSnapToItemPath() && _snapmanager->snapprefs.getSnapIntersectionCS())); return (_snap_enabled && _snapmanager->snapprefs.getSnapModeGuide() && snap_to_something); } |
