summaryrefslogtreecommitdiffstats
path: root/src/seltrans.cpp
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2006-05-08 15:07:23 +0000
committercth103 <cth103@users.sourceforge.net>2006-05-08 15:07:23 +0000
commitda410c000e6b03de0a1b246b60ffcdd1ba6c6fc8 (patch)
treeaae445fe039be8ddcadd602e2a11a673b5b94410 /src/seltrans.cpp
parentwhitespace and fix sodipodi URI (diff)
downloadinkscape-da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8.tar.gz
inkscape-da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8.zip
More snapping cleanups.
(bzr r768)
Diffstat (limited to 'src/seltrans.cpp')
-rw-r--r--src/seltrans.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/src/seltrans.cpp b/src/seltrans.cpp
index bbaaf2f9d..a05cac181 100644
--- a/src/seltrans.cpp
+++ b/src/seltrans.cpp
@@ -1022,9 +1022,28 @@ gboolean Inkscape::SelTrans::skewRequest(SPSelTransHandle const &handle, NR::Poi
}
skew[dim_a] = tan(radians) * s[dim_a];
} else {
- skew[dim_a] = namedview_dim_snap_list_skew(_desktop->namedview,
- Snapper::SNAP_POINT, _snap_points,
- _origin, skew[dim_a], dim_b);
+ SnapManager const &m = _desktop->namedview->snap_manager;
+
+ std::pair<NR::Coord, bool> bb = m.freeSnapSkew(Inkscape::Snapper::BBOX_POINT,
+ _bbox_points,
+ std::list<SPItem const *>(),
+ skew[dim_a],
+ _origin,
+ dim_a);
+
+ std::pair<NR::Coord, bool> sn = m.freeSnapSkew(Inkscape::Snapper::SNAP_POINT,
+ _snap_points,
+ std::list<SPItem const *>(),
+ skew[dim_a],
+ _origin,
+ dim_a);
+
+ if (bb.second || sn.second) {
+ /* We snapped something, so change the skew to reflect it */
+ NR::Coord const bd = bb.second ? bb.first : NR_HUGE;
+ NR::Coord const sd = sn.second ? sn.first : NR_HUGE;
+ skew[dim_a] = std::min(bd, sd);
+ }
}
pt[dim_b] = ( _point[dim_a] - _origin[dim_a] ) * skew[dim_a] + _point[dim_b];