From d05834b3cdca77ccd9a1ab0a32b1ca2dc09a745d Mon Sep 17 00:00:00 2001 From: cth103 Date: Tue, 9 May 2006 11:16:07 +0000 Subject: [PATCH] Re-enable link between grid visibility and grid snap. --- src/snapper.cpp | 17 +++++++++++++---- src/snapper.h | 5 ++++- src/sp-namedview.cpp | 2 ++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/snapper.cpp b/src/snapper.cpp index 963cf7c9d..723213afe 100644 --- a/src/snapper.cpp +++ b/src/snapper.cpp @@ -19,7 +19,7 @@ Inkscape::Snapper::PointType const Inkscape::Snapper::SNAP_POINT = 0x2; * \param nv Named view. * \param d Snap distance. */ -Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const d) : _named_view(nv), _distance(d) +Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const d) : _named_view(nv), _distance(d), _enabled(true) { g_assert(_named_view != NULL); g_assert(SP_IS_NAMEDVIEW(_named_view)); @@ -72,10 +72,19 @@ bool Inkscape::Snapper::getSnapTo(PointType t) const */ bool Inkscape::Snapper::willSnapSomething() const { - return (_snap_to != 0); + return (_enabled && _snap_to != 0); } +/** + * \param s true to enable this snapper, otherwise false. + */ + +void Inkscape::Snapper::setEnabled(bool s) +{ + _enabled = s; +} + /** * Try to snap a point to whatever this snapper is interested in. Any @@ -113,7 +122,7 @@ Inkscape::SnappedPoint Inkscape::Snapper::freeSnap(PointType t, NR::Point const &p, std::list const &it) const { - if (getSnapTo(t) == false) { + if (_enabled == false || getSnapTo(t) == false) { return SnappedPoint(p, NR_HUGE); } @@ -161,7 +170,7 @@ Inkscape::SnappedPoint Inkscape::Snapper::constrainedSnap(PointType t, ConstraintLine const &c, std::list const &it) const { - if (getSnapTo(t) == false) { + if (_enabled == false || getSnapTo(t) == false) { return SnappedPoint(p, NR_HUGE); } diff --git a/src/snapper.h b/src/snapper.h index 33a15bd04..89e4f9d72 100644 --- a/src/snapper.h +++ b/src/snapper.h @@ -46,6 +46,8 @@ public: bool willSnapSomething() const; + void setEnabled(bool s); + SnappedPoint freeSnap(PointType t, NR::Point const &p, SPItem const *it) const; @@ -120,7 +122,8 @@ private: std::list const &it) const = 0; ::NR::Coord _distance; ///< snap distance (desktop coordinates) - int _snap_to; ///< bitmap of point types that we will snap to + int _snap_to; ///< bitmap of point types that we will snap to + bool _enabled; ///< true if this snapper is enabled, otherwise false }; } diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 129ef2c8c..4f9e4e288 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -221,6 +221,8 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va case SP_ATTR_SHOWGRID: nv->showgrid = sp_str_to_bool(value); sp_namedview_setup_grid(nv); + /* Disable grid snaps if the grid is turned off */ + nv->snap_manager.grid.setEnabled(nv->showgrid); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SHOWGUIDES: -- 2.39.5