From 542acb67493132a953fa9bb79b5b462b343fc3f5 Mon Sep 17 00:00:00 2001 From: dvlierop2 Date: Wed, 14 Nov 2007 21:07:46 +0000 Subject: [PATCH] A pasted selection is supposed to snap to the grid, but this cannot work the way its implemented currently. If one of the points is currently snapped, then how can we make sure that that SAME point is snapped again after pasting? If it's another point that snaps, then this is useless... Furthermore it's also buggy currently (it messes up the grid snapping sensitivity), so I'm removing this functionality. If someone wants it back, we should rather round the paste offset to a multiple of the grid pitch. This way, something that was snapped to the grid before will stay snapped after pasting. --- src/selection-chemistry.cpp | 7 +---- src/snap.cpp | 54 ------------------------------------- src/snap.h | 10 ------- 3 files changed, 1 insertion(+), 70 deletions(-) diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 95a2cac0d..e5e2cdc01 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -1161,15 +1161,10 @@ void sp_selection_paste(bool in_place) m -= sel_bbox->midpoint(); } - /* Snap the offset of the new item(s) to the grid */ - SnapManager &sm = desktop->namedview->snap_manager; - SnapManager::SnapperList gs = sm.getGridSnappers(); - m = sm.freeSnapAlways(Inkscape::Snapper::SNAPPOINT_NODE, m, NULL, gs).getPoint(); sp_selection_move_relative(selection, m); } - sp_document_done(document, SP_VERB_EDIT_PASTE, - _("Paste")); + sp_document_done(document, SP_VERB_EDIT_PASTE, _("Paste")); } void sp_selection_paste_style() diff --git a/src/snap.cpp b/src/snap.cpp index edc30e21a..a6b91e074 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -215,60 +215,6 @@ Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t, return findBestSnap(p, sc); } -/** - * Try to snap a point to any of the specified snappers. Snap always, ignoring the snap-distance - * - * \param t Type of point. - * \param p Point. - * \param it Item to ignore when snapping. - * \param snappers List of snappers to try to snap to - * \return Snapped point. - */ - -Inkscape::SnappedPoint -SnapManager::freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - SPItem const *it, - SnapperList &snappers ) -{ - std::list lit; - lit.push_back(it); - return freeSnapAlways(t, p, lit, snappers); -} - -/** - * Try to snap a point to any of the specified snappers. Snap always, ignoring the snap-distance - * - * \param t Type of point. - * \param p Point. - * \param it List of items to ignore when snapping. - * \param snappers List of snappers to try to snap to - * \return Snapped point. - */ - -Inkscape::SnappedPoint -SnapManager::freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - std::list const &it, - SnapperList &snappers ) -{ - - SnappedConstraints sc; - - for (SnapperList::iterator i = snappers.begin(); i != snappers.end(); i++) { - gdouble const curr_gridsnap = (*i)->getDistance(); - const_cast (*i)->setDistance(NR_HUGE); - std::vector points_to_snap; - points_to_snap.push_back(p); - (*i)->freeSnap(sc, t, p, true, points_to_snap, it); - const_cast (*i)->setDistance(curr_gridsnap); - } - - return findBestSnap(p, sc); -} - - - /** * Try to snap a point to any interested snappers. A snap will only occur along * a line described by a Inkscape::Snapper::ConstraintLine. diff --git a/src/snap.h b/src/snap.h index 88254430c..9547064a9 100644 --- a/src/snap.h +++ b/src/snap.h @@ -55,16 +55,6 @@ public: std::vector &points_to_snap, std::list const &it) const; - Inkscape::SnappedPoint freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - SPItem const *it, - SnapperList &snappers ); - - Inkscape::SnappedPoint freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - std::list const &it, - SnapperList &snappers ); - Inkscape::SnappedPoint constrainedSnap(Inkscape::Snapper::PointType t, NR::Point const &p, Inkscape::Snapper::ConstraintLine const &c, -- 2.30.2