summaryrefslogtreecommitdiffstats
path: root/src/widgets/sp-xmlview-tree.cpp
diff options
context:
space:
mode:
authorMenTaLguY <mental@rydia.net>2008-03-07 22:18:56 +0000
committermental <mental@users.sourceforge.net>2008-03-07 22:18:56 +0000
commit31acc450aa0320ab82f5075adf8afbcae0763e6d (patch)
treeef45a9eeb5a7baa754176307396a2837bca879e0 /src/widgets/sp-xmlview-tree.cpp
parentFix #include (diff)
downloadinkscape-31acc450aa0320ab82f5075adf8afbcae0763e6d.tar.gz
inkscape-31acc450aa0320ab82f5075adf8afbcae0763e6d.zip
add basic support for preserving processing instructions in the AST
(bzr r4987)
Diffstat (limited to 'src/widgets/sp-xmlview-tree.cpp')
-rw-r--r--src/widgets/sp-xmlview-tree.cpp25
1 files changed, 25 insertions, 0 deletions
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 {
@@ -330,6 +341,20 @@ comment_content_changed (Inkscape::XML::Node *repr, const gchar * old_content, c
}
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 ("<?%s %s?>", 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)
{
GtkCTreeNode * old_parent;