diff options
| author | MenTaLguY <mental@rydia.net> | 2007-03-23 05:52:15 +0000 |
|---|---|---|
| committer | mental <mental@users.sourceforge.net> | 2007-03-23 05:52:15 +0000 |
| commit | f6e71416f19343cb97098c175acce52771e5e32b (patch) | |
| tree | d487d09840f9cce4372ac89b22f81bf3b2c858e4 /src/application | |
| parent | purge old toolbar code, fill in values and labels (diff) | |
| download | inkscape-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.cpp | 12 | ||||
| -rw-r--r-- | src/application/editor.h | 2 |
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; |
