Code

on closing and document change, if this was the last view on this document, delete...
authorbuliabyak <buliabyak@users.sourceforge.net>
Sun, 21 Sep 2008 22:24:48 +0000 (22:24 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Sun, 21 Sep 2008 22:24:48 +0000 (22:24 +0000)
src/ui/view/view.cpp

index 75b6c453b349096e539e76ed2409252a9f4fc877..1b498a846ec018112149d37bbeb6dd1ce5ded556 100644 (file)
@@ -84,9 +84,6 @@ View::View()
  */
 View::~View()
 {
-    if (_doc) {
-        inkscape_remove_document(_doc);
-    }
     _close();
 }
 
@@ -101,7 +98,11 @@ void View::_close() {
     if (_doc) {
         _document_uri_set_connection.disconnect();
         _document_resized_connection.disconnect();
-        _doc = 0;
+        if (inkscape_remove_document(_doc)) {
+            // this was the last view of this document, so delete it
+            delete _doc;
+        }
+        _doc = NULL;
     }
     
    Inkscape::Verb::delete_all_view (this);
@@ -142,7 +143,10 @@ void View::setDocument(SPDocument *doc) {
     if (_doc) {
         _document_uri_set_connection.disconnect();
         _document_resized_connection.disconnect();
-        inkscape_remove_document(_doc);
+        if (inkscape_remove_document(_doc)) {
+            // this was the last view of this document, so delete it
+            delete _doc;
+        }
     }
 
     inkscape_add_document(doc);