diff options
| author | Carl Hetherington <cth@carlh.net> | 2006-05-08 15:07:23 +0000 |
|---|---|---|
| committer | cth103 <cth103@users.sourceforge.net> | 2006-05-08 15:07:23 +0000 |
| commit | da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8 (patch) | |
| tree | aae445fe039be8ddcadd602e2a11a673b5b94410 /src/seltrans.cpp | |
| parent | whitespace and fix sodipodi URI (diff) | |
| download | inkscape-da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8.tar.gz inkscape-da410c000e6b03de0a1b246b60ffcdd1ba6c6fc8.zip | |
More snapping cleanups.
(bzr r768)
Diffstat (limited to 'src/seltrans.cpp')
| -rw-r--r-- | src/seltrans.cpp | 25 |
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]; |
