diff --git a/src/xml/simple-node.h b/src/xml/simple-node.h
index f1cf786805cda2ec9d6538e45e85595f4b3f0c17..60bb534549e80e6f14c391dc534e823398ea7cba 100644 (file)
--- a/src/xml/simple-node.h
+++ b/src/xml/simple-node.h
#ifndef SEEN_INKSCAPE_XML_SIMPLE_NODE_H
#define SEEN_INKSCAPE_XML_SIMPLE_NODE_H
+#include <glib.h> // g_assert()
+
#include "xml/node.h"
#include "xml/attribute-record.h"
-#include "xml/transaction-logger.h"
#include "xml/composite-node-observer.h"
#include "util/list-container.h"
: virtual public Node, public Inkscape::GC::Managed<>
{
public:
- Session *session() {
- return ( _logger ? &_logger->session() : NULL );
- }
-
gchar const *name() const;
int code() const { return _name; }
void setCodeUnsafe(int code) {
- g_assert(_logger == NULL);
_name = code;
}
return const_cast<SimpleNode *>(this)->document();
}
- Node *duplicate() const { return _duplicate(); }
+ Node *duplicate(Document* doc) const { return _duplicate(doc); }
Node *root();
Node const *root() const {
_observers.remove(observer);
}
+ void addSubtreeObserver(NodeObserver &observer) {
+ _subtree_observers.add(observer);
+ }
+ void removeSubtreeObserver(NodeObserver &observer) {
+ _subtree_observers.remove(observer);
+ }
+
protected:
SimpleNode(int code);
SimpleNode(SimpleNode const &repr);
- virtual SimpleNode *_duplicate() const=0;
+ virtual SimpleNode *_duplicate(Document *doc) const=0;
public: // ideally these should be protected somehow...
- void _setParent(Node *parent) { _parent = parent; }
+ NodeObserver &_subtreeObservers() { return _subtree_observers; }
+ void _setParent(Node *parent);
void _setNext(Node *next) { _next = next; }
void _bindDocument(Document &document);
- void _bindLogger(TransactionLogger &logger);
unsigned _childPosition(Node const &child) const;
unsigned _cachedPosition() const { return _cached_position; }
Node *_parent;
Node *_next;
Document *_document;
- TransactionLogger *_logger;
mutable unsigned _cached_position;
int _name;
Inkscape::Util::MutableList<AttributeRecord> _attributes;
- Inkscape::Util::shared_ptr<char> _content;
+ Inkscape::Util::ptr_shared<char> _content;
unsigned _child_count;
mutable bool _cached_positions_valid;
Node *_last_child;
CompositeNodeObserver _observers;
+ CompositeNodeObserver _subtree_observers;
};
}