summaryrefslogtreecommitdiffstats
path: root/src/application
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2007-03-23 05:52:15 +0000
committermental <mental@users.sourceforge.net>2007-03-23 05:52:15 +0000
commitf6e71416f19343cb97098c175acce52771e5e32b (patch)
treed487d09840f9cce4372ac89b22f81bf3b2c858e4 /src/application
parentpurge old toolbar code, fill in values and labels (diff)
downloadinkscape-f6e71416f19343cb97098c175acce52771e5e32b.tar.gz
inkscape-f6e71416f19343cb97098c175acce52771e5e32b.zip
allow multiple (balanced) calls to add and remove document
(bzr r2745)
Diffstat (limited to 'src/application')
-rw-r--r--src/application/editor.cpp12
-rw-r--r--src/application/editor.h2
2 files changed, 10 insertions, 4 deletions
diff --git a/src/application/editor.cpp b/src/application/editor.cpp
index 1cc45f3c7..56984dcbb 100644
--- a/src/application/editor.cpp
+++ b/src/application/editor.cpp
@@ -109,15 +109,19 @@ Editor::getActiveDocument()
void
Editor::addDocument (SPDocument *doc)
{
- g_assert (!g_slist_find (_instance->_documents, doc));
- _instance->_documents = g_slist_append (_instance->_documents, doc);
+ if ( _instance->_document_set.find(doc) == _instance->_document_set.end() ) {
+ _instance->_documents = g_slist_append (_instance->_documents, doc);
+ }
+ _instance->_document_set.insert(doc);
}
void
Editor::removeDocument (SPDocument *doc)
{
- g_assert (g_slist_find (_instance->_documents, doc));
- _instance->_documents = g_slist_remove (_instance->_documents, doc);
+ _instance->_document_set.erase(doc);
+ if ( _instance->_document_set.find(doc) == _instance->_document_set.end() ) {
+ _instance->_documents = g_slist_remove (_instance->_documents, doc);
+ }
}
SPDesktop*
diff --git a/src/application/editor.h b/src/application/editor.h
index 9d2ce493c..a6fe66688 100644
--- a/src/application/editor.h
+++ b/src/application/editor.h
@@ -19,6 +19,7 @@
#include <sigc++/sigc++.h>
#include <glib/gslist.h>
#include <glibmm/ustring.h>
+#include <set>
#include "app-prototype.h"
class SPDesktop;
@@ -96,6 +97,7 @@ protected:
Editor(Editor const &);
Editor& operator=(Editor const &);
+ std::multiset<SPDocument *> _document_set;
GSList *_documents;
GSList *_desktops;
gchar *_argv0;