Code

Bug 1478136 fix - "foo2" was shown instead of guideline id in Guideline dialog
[inkscape.git] / src / document-subset.cpp
index d156b045b23dab2d2f58525e24f600ddb65f8995..ba6e416cd49a09c08157be7a6c4625c384eb165d 100644 (file)
@@ -142,6 +142,7 @@ struct DocumentSubset::Relations : public GC::Managed<GC::ATOMIC>,
     void addOne(SPObject *obj);
     void remove(SPObject *obj, bool subtree);
     void reorder(SPObject *obj);
+    void clear();
 
 private:
     Record &_doAdd(SPObject *obj) {
@@ -194,8 +195,8 @@ private:
     }
 };
 
-DocumentSubset::DocumentSubset(SPDocument *document)
-: _document(document), _relations(new DocumentSubset::Relations())
+DocumentSubset::DocumentSubset()
+: _relations(new DocumentSubset::Relations())
 {
 }
 
@@ -277,6 +278,16 @@ void DocumentSubset::Relations::remove(SPObject *obj, bool subtree) {
     changed_signal.emit();
 }
 
+void DocumentSubset::Relations::clear() {
+    Record &root=records[NULL];
+
+    while (!root.children.empty()) {
+        _doRemoveSubtree(root.children.front());
+    }
+
+    changed_signal.emit();
+}
+
 void DocumentSubset::Relations::reorder(SPObject *obj) {
     SPObject::ParentIterator parent=obj;
 
@@ -316,6 +327,10 @@ void DocumentSubset::_remove(SPObject *obj, bool subtree) {
     _relations->remove(obj, subtree);
 }
 
+void DocumentSubset::_clear() {
+    _relations->clear();
+}
+
 bool DocumentSubset::includes(SPObject *obj) const {
     return _relations->get(obj);
 }