summaryrefslogtreecommitdiffstats
path: root/src/xml/simple-node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml/simple-node.cpp')
-rw-r--r--src/xml/simple-node.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/xml/simple-node.cpp b/src/xml/simple-node.cpp
index c8b0828c4..554752941 100644
--- a/src/xml/simple-node.cpp
+++ b/src/xml/simple-node.cpp
@@ -165,6 +165,8 @@ SimpleNode::SimpleNode(int code)
this->_document = NULL;
this->_parent = this->_next = NULL;
this->_first_child = this->_last_child = NULL;
+
+ _observers.add(_subtree_observers);
}
SimpleNode::SimpleNode(SimpleNode const &node)
@@ -199,6 +201,8 @@ SimpleNode::SimpleNode(SimpleNode const &node)
{
_attributes = cons(*iter, _attributes);
}
+
+ _observers.add(_subtree_observers);
}
gchar const *SimpleNode::name() const {
@@ -267,6 +271,16 @@ bool SimpleNode::matchAttributeName(gchar const *partial_name) const {
return false;
}
+void SimpleNode::_setParent(Node *parent) {
+ if (_parent) {
+ _subtree_observers.remove(_parent->_subtreeObservers());
+ }
+ _parent = parent;
+ if (parent) {
+ _subtree_observers.add(parent->_subtreeObservers());
+ }
+}
+
void SimpleNode::setContent(gchar const *content) {
ptr_shared<char> old_content=_content;
ptr_shared<char> new_content = ( content ? share_string(content) : ptr_shared<char>() );