Code

* INTL - fixed: "Crop to" dropdown strings not translated for PDF Import
[inkscape.git] / src / sp-namedview.cpp
index 0368262dcc2eef5df8749aa4a08170564db81a9f..cc7adeaa8250ed8ab1a2f089aa44dca94033bdf7 100644 (file)
@@ -15,6 +15,8 @@
  */
 
 #include "config.h"
+#include <cstring>
+#include <string>
 
 #include "display/canvas-grid.h"
 #include "helper/units.h"
@@ -281,9 +283,9 @@ static void sp_namedview_release(SPObject *object)
 
     // delete grids:
     while ( namedview->grids ) {
-        Inkscape::CanvasGrid *gr = (Inkscape::CanvasGrid *)namedview->grids->data;
+        Inkscape::CanvasGrid *gr = (Inkscape::CanvasGrid *)namedview->grids->data; // get first entry
         delete gr;
-        namedview->grids = g_slist_remove_link(namedview->grids, namedview->grids);
+        namedview->grids = g_slist_remove_link(namedview->grids, namedview->grids); // deletes first entry
     }
 
     if (((SPObjectClass *) parent_class)->release) {
@@ -575,6 +577,10 @@ sp_namedview_add_grid(SPNamedView *nv, Inkscape::XML::Node *repr, SPDesktop *des
             doc = sp_desktop_document(desktop);
         else
             doc = sp_desktop_document(static_cast<SPDesktop*>(nv->views->data));
+        if (!doc) {
+            g_warning("sp_namedview_add_grid - how come doc is null here?!");
+            return NULL;
+        }
         grid = Inkscape::CanvasGrid::NewGrid(nv, repr, doc, gridtype);
         nv->grids = g_slist_append(nv->grids, grid);
         //Initialize the snapping parameters for the new grid
@@ -833,13 +839,6 @@ void SPNamedView::hide(SPDesktop const *desktop)
     }
 
     views = g_slist_remove(views, desktop);
-
-    // delete grids:
-    while ( grids ) {
-        Inkscape::CanvasGrid *gr = (Inkscape::CanvasGrid *)grids->data;
-        delete gr;
-        grids = g_slist_remove_link(grids, grids);
-    }
 }
 
 void SPNamedView::activateGuides(gpointer desktop, gboolean active)
@@ -881,11 +880,10 @@ void sp_namedview_toggle_guides(SPDocument *doc, Inkscape::XML::Node *repr)
 
     bool saved = sp_document_get_undo_sensitive(doc);
     sp_document_set_undo_sensitive(doc, false);
-
     sp_repr_set_boolean(repr, "showguides", v);
-
-    doc->setModified();
     sp_document_set_undo_sensitive(doc, saved);
+
+    doc->setModifiedSinceSave();
 }
 
 void sp_namedview_show_grids(SPNamedView * namedview, bool show, bool dirty_document)
@@ -897,15 +895,14 @@ void sp_namedview_show_grids(SPNamedView * namedview, bool show, bool dirty_docu
 
     bool saved = sp_document_get_undo_sensitive(doc);
     sp_document_set_undo_sensitive(doc, false);
-
     sp_repr_set_boolean(repr, "showgrid", namedview->grids_visible);
+    sp_document_set_undo_sensitive(doc, saved);
 
     /* we don't want the document to get dirty on startup; that's when
        we call this function with dirty_document = false */
     if (dirty_document) {
-        doc->setModified();
+        doc->setModifiedSinceSave();
     }
-    sp_document_set_undo_sensitive(doc, saved);
 }
 
 gchar const *SPNamedView::getName() const