From da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 8 May 2006 15:07:23 +0000 Subject: More snapping cleanups. (bzr r768) --- src/seltrans.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'src/seltrans.cpp') 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 bb = m.freeSnapSkew(Inkscape::Snapper::BBOX_POINT, + _bbox_points, + std::list(), + skew[dim_a], + _origin, + dim_a); + + std::pair sn = m.freeSnapSkew(Inkscape::Snapper::SNAP_POINT, + _snap_points, + std::list(), + 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]; -- cgit v1.2.3