summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2006-05-09 11:16:07 +0000
committercth103 <cth103@users.sourceforge.net>2006-05-09 11:16:07 +0000
commit59c4341913f56e5fdc21c58ebf2425eadaec1eaa (patch)
treee193ba7062a50fddeace35edfe09dbe9aff4b8c1
parentSmall comment cleanups. (diff)
downloadinkscape-59c4341913f56e5fdc21c58ebf2425eadaec1eaa.tar.gz
inkscape-59c4341913f56e5fdc21c58ebf2425eadaec1eaa.zip
Re-enable link between grid visibility and grid snap.
(bzr r795)
-rw-r--r--src/snapper.cpp17
-rw-r--r--src/snapper.h5
-rw-r--r--src/sp-namedview.cpp2
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<SPItem const *> 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<SPItem const *> 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<SPItem const *> 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: