diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp
index bd7793ca13fbb169dd4786d34e2cab49f5d750f0..9c36b5057aa4df5f978a88e120914971b43816eb 100644 (file)
--- a/src/sp-namedview.cpp
+++ b/src/sp-namedview.cpp
#include "document.h"
#include "desktop-events.h"
#include "desktop-handles.h"
+#include "event-log.h"
#include "sp-guide.h"
#include "sp-item-group.h"
#include "sp-namedview.h"
nv->default_layer_id = 0;
nv->connector_spacing = defaultConnSpacing;
+
+ new (&nv->snap_manager) SnapManager(nv);
}
static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr)
if (((SPObjectClass *) parent_class)->release) {
((SPObjectClass *) parent_class)->release(object);
}
+
+ namedview->snap_manager.~SnapManager();
}
static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value)
@@ -217,6 +222,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:
if (layer) {
desktop->setCurrentLayer(layer);
}
+
+ // FIXME: find a better place to do this
+ sp_desktop_document(desktop)->getEventLog().updateUndoVerbs();
}
void sp_namedview_document_from_window(SPDesktop *desktop)
NR::Rect const r = desktop->get_display_area();
// saving window geometry is not undoable
- gboolean saved = sp_document_get_undo_sensitive(sp_desktop_document(desktop));
- sp_document_set_undo_sensitive(sp_desktop_document(desktop), FALSE);
+ bool saved = sp_document_get_undo_sensitive(sp_desktop_document(desktop));
+ sp_document_set_undo_sensitive(sp_desktop_document(desktop), false);
sp_repr_set_svg_double(view, "inkscape:zoom", desktop->current_zoom());
sp_repr_set_svg_double(view, "inkscape:cx", r.midpoint()[NR::X]);
v = !v;
}
- gboolean saved = sp_document_get_undo_sensitive(doc);
- sp_document_set_undo_sensitive(doc, FALSE);
+ bool saved = sp_document_get_undo_sensitive(doc);
+ sp_document_set_undo_sensitive(doc, false);
sp_repr_set_boolean(repr, "showguides", v);
sp_repr_get_boolean(repr, "showgrid", &v);
v = !v;
- gboolean saved = sp_document_get_undo_sensitive(doc);
- sp_document_set_undo_sensitive(doc, FALSE);
+ bool saved = sp_document_get_undo_sensitive(doc);
+ sp_document_set_undo_sensitive(doc, false);
sp_repr_set_boolean(repr, "showgrid", v);