X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=inline;f=src%2Fsp-namedview.cpp;h=9c36b5057aa4df5f978a88e120914971b43816eb;hb=7fd534c43f9eeb4ae3e22a1037716239f73a3e55;hp=bd7793ca13fbb169dd4786d34e2cab49f5d750f0;hpb=d2378b62d2e48da3d7b23df2be3cf42184293299;p=inkscape.git diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index bd7793ca1..9c36b5057 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -23,6 +23,7 @@ #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" @@ -116,6 +117,8 @@ static void sp_namedview_init(SPNamedView *nv) 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) @@ -202,6 +205,8 @@ static void sp_namedview_release(SPObject *object) 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: @@ -668,6 +675,9 @@ void sp_namedview_window_from_document(SPDesktop *desktop) 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) @@ -677,8 +687,8 @@ 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]); @@ -761,8 +771,8 @@ void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr) 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); @@ -776,8 +786,8 @@ void sp_namedview_toggle_grid(SPDocument *doc, Inkscape::XML::Node *repr) 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);