summaryrefslogtreecommitdiffstats
path: root/src/object-snapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object-snapper.cpp')
-rw-r--r--src/object-snapper.cpp37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp
index 682c26869..3088accd2 100644
--- a/src/object-snapper.cpp
+++ b/src/object-snapper.cpp
@@ -181,7 +181,7 @@ void Inkscape::ObjectSnapper::_collectNodes(Inkscape::SnapSourceType const &t,
bool p_is_a_node = t & Inkscape::SNAPSOURCE_NODE_CATEGORY;
bool p_is_a_bbox = t & Inkscape::SNAPSOURCE_BBOX_CATEGORY;
- bool p_is_other = t & Inkscape::SNAPSOURCE_OTHER_CATEGORY;
+ bool p_is_other = t & Inkscape::SNAPSOURCE_OTHERS_CATEGORY;
// A point considered for snapping should be either a node, a bbox corner or a guide. Pick only ONE!
g_assert(!((p_is_a_node && p_is_a_bbox) || (p_is_a_bbox && p_is_other) || (p_is_a_node && p_is_other)));
@@ -359,7 +359,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/,
SPItem::BBoxType bbox_type = SPItem::GEOMETRIC_BBOX;
bool p_is_a_node = source_type & Inkscape::SNAPSOURCE_NODE_CATEGORY;
- bool p_is_other = source_type & Inkscape::SNAPSOURCE_OTHER_CATEGORY;
+ bool p_is_other = source_type & Inkscape::SNAPSOURCE_OTHERS_CATEGORY;
if (_snapmanager->snapprefs.getSnapToBBoxPath()) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -369,7 +369,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/,
}
// Consider the page border for snapping
- if (_snapmanager->snapprefs.getSnapToPageBorder() && _snapmanager->snapprefs.getSnapModeBBoxOrNodes()) {
+ if (_snapmanager->snapprefs.getSnapToPageBorder() && _snapmanager->snapprefs.getSnapModeAny()) {
Geom::PathVector *border_path = _getBorderPathv();
if (border_path != NULL) {
_paths_to_snap_to->push_back(Inkscape::SnapCandidatePath(border_path, SNAPTARGET_PAGE_BORDER, Geom::OptRect()));
@@ -394,7 +394,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/,
//Build a list of all paths considered for snapping to
//Add the item's path to snap to
- if (_snapmanager->snapprefs.getSnapToItemPath() && _snapmanager->snapprefs.getSnapModeNode()) {
+ if (_snapmanager->snapprefs.getSnapToItemPath() && (_snapmanager->snapprefs.getSnapModeNode() || _snapmanager->snapprefs.getSnapModeOthers())) {
if (p_is_other || !(_snapmanager->snapprefs.getStrictSnapping() && !p_is_a_node)) {
// Snapping to the path of characters is very cool, but for a large
// chunk of text this will take ages! So limit snapping to text paths
@@ -438,7 +438,7 @@ void Inkscape::ObjectSnapper::_collectPaths(Geom::Point /*p*/,
}
//Add the item's bounding box to snap to
- if (_snapmanager->snapprefs.getSnapToBBoxPath() && _snapmanager->snapprefs.getSnapModeBBox()) {
+ if (_snapmanager->snapprefs.getSnapToBBoxPath() && (_snapmanager->snapprefs.getSnapModeBBox() || _snapmanager->snapprefs.getSnapModeOthers())) {
if (p_is_other || !(_snapmanager->snapprefs.getStrictSnapping() && p_is_a_node)) {
// Discard the bbox of a clipped path / mask, because we don't want to snap to both the bbox
// of the item AND the bbox of the clipping path at the same time
@@ -572,7 +572,6 @@ void Inkscape::ObjectSnapper::_snapPathsConstrained(SnappedConstraints &sc,
// Now we can finally do the real snapping, using the paths collected above
g_assert(_snapmanager->getDesktop() != NULL);
- Geom::Point const p_doc = _snapmanager->getDesktop()->dt2doc(p_proj_on_constraint);
Geom::Point direction_vector = c.getDirection();
if (!is_zero(direction_vector)) {
@@ -674,16 +673,16 @@ void Inkscape::ObjectSnapper::freeSnap(SnappedConstraints &sc,
bool snap_nodes = (_snapmanager->snapprefs.getSnapModeNode() && (
_snapmanager->snapprefs.getSnapToItemNode() ||
_snapmanager->snapprefs.getSnapSmoothNodes() ||
- _snapmanager->snapprefs.getSnapLineMidpoints() ||
- _snapmanager->snapprefs.getSnapObjectMidpoints()
+ _snapmanager->snapprefs.getSnapLineMidpoints()
)) || (_snapmanager->snapprefs.getSnapModeBBox() && (
_snapmanager->snapprefs.getSnapToBBoxNode() ||
_snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() ||
_snapmanager->snapprefs.getSnapBBoxMidpoints()
- )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && (
+ )) || (_snapmanager->snapprefs.getSnapModeAny() && (
_snapmanager->snapprefs.getIncludeItemCenter() ||
- _snapmanager->snapprefs.getSnapToPageBorder()
- ));
+ _snapmanager->snapprefs.getSnapToPageBorder() ||
+ _snapmanager->snapprefs.getSnapObjectMidpoints()
+ )) ;
if (snap_nodes) {
_snapNodes(sc, p, unselected_nodes);
@@ -691,7 +690,7 @@ void Inkscape::ObjectSnapper::freeSnap(SnappedConstraints &sc,
if ((_snapmanager->snapprefs.getSnapModeNode() && _snapmanager->snapprefs.getSnapToItemPath()) ||
(_snapmanager->snapprefs.getSnapModeBBox() && _snapmanager->snapprefs.getSnapToBBoxPath()) ||
- (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && _snapmanager->snapprefs.getSnapToPageBorder())) {
+ (_snapmanager->snapprefs.getSnapModeAny() && _snapmanager->snapprefs.getSnapToPageBorder())) {
unsigned n = (unselected_nodes == NULL) ? 0 : unselected_nodes->size();
if (n > 0) {
/* While editing a path in the node tool, findCandidates must ignore that path because
@@ -741,14 +740,14 @@ void Inkscape::ObjectSnapper::constrainedSnap( SnappedConstraints &sc,
bool snap_nodes = (_snapmanager->snapprefs.getSnapModeNode() && (
_snapmanager->snapprefs.getSnapToItemNode() ||
_snapmanager->snapprefs.getSnapSmoothNodes() ||
- _snapmanager->snapprefs.getSnapLineMidpoints() ||
- _snapmanager->snapprefs.getSnapObjectMidpoints()
+ _snapmanager->snapprefs.getSnapLineMidpoints()
)) || (_snapmanager->snapprefs.getSnapModeBBox() && (
_snapmanager->snapprefs.getSnapToBBoxNode() ||
_snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() ||
_snapmanager->snapprefs.getSnapBBoxMidpoints()
- )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && (
+ )) || (_snapmanager->snapprefs.getSnapModeAny() && (
_snapmanager->snapprefs.getIncludeItemCenter() ||
+ _snapmanager->snapprefs.getSnapObjectMidpoints() ||
_snapmanager->snapprefs.getSnapToPageBorder()
));
@@ -800,16 +799,16 @@ bool Inkscape::ObjectSnapper::ThisSnapperMightSnap() const
_snapmanager->snapprefs.getSnapToItemPath() ||
_snapmanager->snapprefs.getSnapToItemNode() ||
_snapmanager->snapprefs.getSnapSmoothNodes() ||
- _snapmanager->snapprefs.getSnapLineMidpoints() ||
- _snapmanager->snapprefs.getSnapObjectMidpoints()
+ _snapmanager->snapprefs.getSnapLineMidpoints()
)) || (_snapmanager->snapprefs.getSnapModeBBox() && (
_snapmanager->snapprefs.getSnapToBBoxPath() ||
_snapmanager->snapprefs.getSnapToBBoxNode() ||
_snapmanager->snapprefs.getSnapBBoxEdgeMidpoints() ||
_snapmanager->snapprefs.getSnapBBoxMidpoints()
- )) || (_snapmanager->snapprefs.getSnapModeBBoxOrNodes() && (
+ )) || (_snapmanager->snapprefs.getSnapModeAny() && (
_snapmanager->snapprefs.getSnapToPageBorder() ||
- _snapmanager->snapprefs.getIncludeItemCenter()
+ _snapmanager->snapprefs.getIncludeItemCenter() ||
+ _snapmanager->snapprefs.getSnapObjectMidpoints()
));
return (_snap_enabled && snap_to_something);