Code

now that selection description includes style (filtered, clipped), we need to update...
[inkscape.git] / src / document.cpp
index a2923c0864107d9f9b4069f9a14a1497eea448e5..4f54870324b9232fc972ff3897f0ac0b50124826 100644 (file)
@@ -45,7 +45,7 @@
 #include "xml/repr.h"
 #include "helper/units.h"
 #include "inkscape-private.h"
-#include "inkscape_version.h"
+#include "inkscape-version.h"
 #include "sp-object-repr.h"
 #include "sp-namedview.h"
 #include "desktop.h"
@@ -93,7 +93,8 @@ SPDocument::SPDocument() :
     router(new Avoid::Router()),
     perspectives(0),
     current_persp3d(0),
-    _collection_queue(0)
+    _collection_queue(0),
+    oldSignalsConnected(false)
 {
     // Don't use the Consolidate moves optimisation.
     router->ConsolidateMoves = false;
@@ -181,8 +182,14 @@ SPDocument::~SPDocument() {
         modified_id = 0;
     }
 
-    _selection_changed_connection.disconnect();
-    _desktop_activated_connection.disconnect();
+    if (oldSignalsConnected) {
+        g_signal_handlers_disconnect_by_func(G_OBJECT(INKSCAPE),
+                                             reinterpret_cast<gpointer>(sp_document_reset_key),
+                                             static_cast<gpointer>(this));
+    } else {
+        _selection_changed_connection.disconnect();
+        _desktop_activated_connection.disconnect();
+    }
 
     if (keepalive) {
         inkscape_unref();
@@ -291,7 +298,7 @@ sp_document_create(Inkscape::XML::Document *rdoc,
 
     /* fixme: Not sure about this, but lets assume ::build updates */
     rroot->setAttribute("sodipodi:version", SODIPODI_VERSION);
-    rroot->setAttribute("inkscape:version", INKSCAPE_VERSION);
+    rroot->setAttribute("inkscape:version", Inkscape::version_string);
     /* fixme: Again, I moved these here to allow version determining in ::build (Lauris) */
 
     /* Quick hack 2 - get default image size into document */
@@ -325,7 +332,7 @@ sp_document_create(Inkscape::XML::Document *rdoc,
         if (!pagecolor.empty()) {
             rnew->setAttribute("pagecolor", pagecolor.data());
         }
-        Glib::ustring bordercolor = prefs->getString("/template/base/pagecolor");
+        Glib::ustring bordercolor = prefs->getString("/template/base/bordercolor");
         if (!bordercolor.empty()) {
             rnew->setAttribute("bordercolor", bordercolor.data());
         }
@@ -385,9 +392,11 @@ sp_document_create(Inkscape::XML::Document *rdoc,
                          G_CALLBACK(sp_document_reset_key), document);
         g_signal_connect(G_OBJECT(INKSCAPE), "activate_desktop",
                          G_CALLBACK(sp_document_reset_key), document);
+        document->oldSignalsConnected = true;
     } else {
         document->_selection_changed_connection = Inkscape::NSApplication::Editor::connectSelectionChanged (sigc::mem_fun (*document, &SPDocument::reset_key));
         document->_desktop_activated_connection = Inkscape::NSApplication::Editor::connectDesktopActivated (sigc::mem_fun (*document, &SPDocument::reset_key));
+        document->oldSignalsConnected = false;
     }
 
     return document;