From 31acc450aa0320ab82f5075adf8afbcae0763e6d Mon Sep 17 00:00:00 2001 From: MenTaLguY Date: Fri, 7 Mar 2008 22:18:56 +0000 Subject: add basic support for preserving processing instructions in the AST (bzr r4987) --- src/widgets/sp-xmlview-tree.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'src/widgets/sp-xmlview-tree.cpp') diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp index ee5ca1823..b2d1a2531 100644 --- a/src/widgets/sp-xmlview-tree.cpp +++ b/src/widgets/sp-xmlview-tree.cpp @@ -41,6 +41,7 @@ static void element_order_changed (Inkscape::XML::Node * repr, Inkscape::XML::No static void text_content_changed (Inkscape::XML::Node * repr, const gchar * old_content, const gchar * new_content, gpointer data); static void comment_content_changed (Inkscape::XML::Node * repr, const gchar * old_content, const gchar * new_content, gpointer data); +static void pi_content_changed (Inkscape::XML::Node * repr, const gchar * old_content, const gchar * new_content, gpointer data); static void tree_move (GtkCTree * tree, GtkCTreeNode * node, GtkCTreeNode * new_parent, GtkCTreeNode * new_sibling); @@ -76,6 +77,14 @@ static const Inkscape::XML::NodeEventVector comment_repr_events = { NULL /* order_changed */ }; +static const Inkscape::XML::NodeEventVector pi_repr_events = { + NULL, /* child_added */ + NULL, /* child_removed */ + NULL, /* attr_changed */ + pi_content_changed, + NULL /* order_changed */ +}; + static GtkCTreeClass * parent_class = NULL; GtkWidget * @@ -191,6 +200,8 @@ add_node (SPXMLViewTree * tree, GtkCTreeNode * parent, GtkCTreeNode * before, In vec = &text_repr_events; } else if ( repr->type() == Inkscape::XML::COMMENT_NODE ) { vec = &comment_repr_events; + } else if ( repr->type() == Inkscape::XML::PI_NODE ) { + vec = &pi_repr_events; } else if ( repr->type() == Inkscape::XML::ELEMENT_NODE ) { vec = &element_repr_events; } else { @@ -329,6 +340,20 @@ comment_content_changed (Inkscape::XML::Node *repr, const gchar * old_content, c g_free (label); } +void +pi_content_changed(Inkscape::XML::Node *repr, const gchar * old_content, const gchar *new_content, gpointer ptr) +{ + NodeData *data; + gchar *label; + + data = (NodeData *) ptr; + + if (data->tree->blocked) return; + + label = g_strdup_printf ("", repr->name(), new_content); + gtk_ctree_node_set_text (GTK_CTREE (data->tree), data->node, 0, label); + g_free (label); +} void tree_move (GtkCTree * tree, GtkCTreeNode * node, GtkCTreeNode * new_parent, GtkCTreeNode * new_sibling) { -- cgit v1.2.3