index fe51f014469e79174d9ad6bd3f5f6b75c892f7a9..89892aab48ed1d39aec805d67a468aa660f16de8 100644 (file)
--- a/src/dialogs/xml-tree.cpp
+++ b/src/dialogs/xml-tree.cpp
* Lauris Kaplinski <lauris@kaplinski.com>
* MenTaLguY <mental@rydia.net>
* bulia byak <buliabyak@users.sf.net>
+ * Johan Engelen <goejendaagh@zonnet.nl>
*
- * Copyright (C) 1999-2005 Authors
+ * Copyright (C) 1999-2006 Authors
* Copyright (C) 2004 David Turner
*
* Released under GNU GPL, read the file 'COPYING' for more information
#include "message-stack.h"
#include "message-context.h"
+#define MIN_ONSCREEN_DISTANCE 50
+
struct EditableDest {
GtkEditable *editable;
gchar *text;
static win_data wd;
// impossible original values to make sure they are read from prefs
static gint x = -1000, y = -1000, w = 0, h = 0;
-static gchar *prefs_path = "dialogs.xml";
+static gchar const *const prefs_path = "dialogs.xml";
static GtkWidget *status = NULL;
static Inkscape::MessageStack *_message_stack = NULL;
static Inkscape::MessageContext *_message_context = NULL;
dlg = sp_window_new("", TRUE);
if (x == -1000 || y == -1000) {
- x = prefs_get_int_attribute(prefs_path, "x", 0);
- y = prefs_get_int_attribute(prefs_path, "y", 0);
+ x = prefs_get_int_attribute(prefs_path, "x", -1000);
+ y = prefs_get_int_attribute(prefs_path, "y", -1000);
}
if (w ==0 || h == 0) {
w = prefs_get_int_attribute(prefs_path, "w", 0);
h = prefs_get_int_attribute(prefs_path, "h", 0);
}
- if (x != 0 || y != 0) {
+
+// if (x<0) x=0;
+// if (y<0) y=0;
+
+ if (w && h) {
+ gtk_window_resize((GtkWindow *) dlg, w, h);
+ }
+ if (x >= 0 && y >= 0 && (x < (gdk_screen_width()-MIN_ONSCREEN_DISTANCE)) && (y < (gdk_screen_height()-MIN_ONSCREEN_DISTANCE))) {
gtk_window_move((GtkWindow *) dlg, x, y);
} else {
gtk_window_set_position(GTK_WINDOW(dlg), GTK_WIN_POS_CENTER);
}
- if (w && h) {
- gtk_window_resize((GtkWindow *) dlg, w, h);
- }
sp_transientize(dlg);
wd.win = dlg;
wd.stop = 0;
NULL,
_("New element node"),
NULL,
- sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+ sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
INKSCAPE_STOCK_ADD_XML_ELEMENT_NODE ),
G_CALLBACK(cmd_new_element_node),
NULL);
button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
NULL, _("New text node"), NULL,
- sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+ sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
INKSCAPE_STOCK_ADD_XML_TEXT_NODE ),
G_CALLBACK(cmd_new_text_node),
NULL);
button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
NULL, _("Duplicate node"), NULL,
- sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+ sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
INKSCAPE_STOCK_DUPLICATE_XML_NODE ),
G_CALLBACK(cmd_duplicate_node),
NULL);
button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
NULL, _("Delete node"), NULL,
- sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+ sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
INKSCAPE_STOCK_DELETE_XML_NODE ),
G_CALLBACK(cmd_delete_node), NULL );
button = gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
NULL, _("Delete attribute"), NULL,
- sp_icon_new( GTK_ICON_SIZE_LARGE_TOOLBAR,
+ sp_icon_new( Inkscape::ICON_SIZE_LARGE_TOOLBAR,
INKSCAPE_STOCK_DELETE_XML_ATTRIBUTE ),
(GCallback) cmd_delete_attr, NULL);
} // end of sp_xml_tree_dialog()
-static gboolean sp_xml_tree_key_press(GtkWidget *widget, GdkEventKey *event)
+static gboolean sp_xml_tree_key_press(GtkWidget */*widget*/, GdkEventKey *event)
{
unsigned int shortcut = get_group0_keyval(event) |
}
-static void sp_xmltree_desktop_change(Inkscape::Application *inkscape,
+static void sp_xmltree_desktop_change(Inkscape::Application */*inkscape*/,
SPDesktop *desktop,
- GtkWidget *dialog )
+ GtkWidget */*dialog*/ )
{
if (!desktop) {
return;
}
current_desktop = desktop;
if (desktop) {
- sel_changed_connection = SP_DT_SELECTION(desktop)->connectChanged(&on_desktop_selection_changed);
+ sel_changed_connection = sp_desktop_selection(desktop)->connectChanged(&on_desktop_selection_changed);
document_replaced_connection = desktop->connectDocumentReplaced(&on_document_replaced);
- set_tree_document(SP_DT_DOCUMENT(desktop));
+ set_tree_document(sp_desktop_document(desktop));
} else {
set_tree_document(NULL);
}
sp_xmlview_attr_list_set_repr(attributes, NULL);
}
- if (repr && ( repr->type() == Inkscape::XML::TEXT_NODE || repr->type() == Inkscape::XML::COMMENT_NODE ) ) {
+ if (repr && ( repr->type() == Inkscape::XML::TEXT_NODE || repr->type() == Inkscape::XML::COMMENT_NODE || repr->type() == Inkscape::XML::PI_NODE ) ) {
sp_xmlview_content_set_repr(content, repr);
} else {
sp_xmlview_content_set_repr(content, NULL);
return NULL;
}
- return SP_DT_SELECTION(current_desktop)->singleRepr();
+ return sp_desktop_selection(current_desktop)->singleRepr();
}
return;
}
- Inkscape::Selection *selection = SP_DT_SELECTION(current_desktop);
+ Inkscape::Selection *selection = sp_desktop_selection(current_desktop);
SPObject *object;
if (repr) {
repr = sp_repr_parent(repr);
} // end of while loop
- object = SP_DT_DOCUMENT(current_desktop)->getObjectByRepr(repr);
+ object = sp_desktop_document(current_desktop)->getObjectByRepr(repr);
} else {
object = NULL;
}
void on_tree_select_row(GtkCTree *tree,
GtkCTreeNode *node,
- gint column,
- gpointer data)
+ gint /*column*/,
+ gpointer /*data*/)
{
if (blocked) {
return;
void on_tree_unselect_row(GtkCTree *tree,
GtkCTreeNode *node,
- gint column,
- gpointer data)
+ gint /*column*/,
+ gpointer /*data*/)
{
if (blocked) {
return;
-void after_tree_move(GtkCTree *tree,
+void after_tree_move(GtkCTree */*tree*/,
GtkCTreeNode *node,
GtkCTreeNode *new_parent,
GtkCTreeNode *new_sibling,
- gpointer data)
+ gpointer /*data*/)
{
if (GTK_CTREE_ROW(node)->parent == new_parent &&
GTK_CTREE_ROW(node)->sibling == new_sibling)
{
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Drag XML subtree"));
} else {
sp_document_cancel(current_document);
}
}
-static void on_destroy(GtkObject *object, gpointer data)
+static void on_destroy(GtkObject */*object*/, gpointer /*data*/)
{
set_tree_desktop(NULL);
gtk_object_destroy(GTK_OBJECT(tooltips));
-static gboolean on_delete(GtkObject *object, GdkEvent *event, gpointer data)
+static gboolean on_delete(GtkObject */*object*/, GdkEvent */*event*/, gpointer /*data*/)
{
gtk_window_get_position((GtkWindow *) dlg, &x, &y);
gtk_window_get_size((GtkWindow *) dlg, &w, &h);
+ if (x<0) x=0;
+ if (y<0) y=0;
+
prefs_set_int_attribute(prefs_path, "x", x);
prefs_set_int_attribute(prefs_path, "y", y);
prefs_set_int_attribute(prefs_path, "w", w);
}
-static void _set_status_message(Inkscape::MessageType type, const gchar *message, GtkWidget *dialog)
+static void _set_status_message(Inkscape::MessageType /*type*/, const gchar *message, GtkWidget */*dialog*/)
{
if (status) {
gtk_label_set_markup(GTK_LABEL(status), message ? message : "");
@@ -930,9 +941,9 @@ static void _set_status_message(Inkscape::MessageType type, const gchar *message
}
-void on_tree_select_row_enable(GtkCTree *tree,
- GtkCTreeNode *node,
- gint column,
+void on_tree_select_row_enable(GtkCTree */*tree*/,
+ GtkCTreeNode */*node*/,
+ gint /*column*/,
gpointer data)
{
gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE);
void on_tree_select_row_enable_if_element(GtkCTree *tree,
GtkCTreeNode *node,
- gint column,
+ gint /*column*/,
gpointer data )
{
Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node);
void on_tree_select_row_show_if_element(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+ gint /*column*/, gpointer data)
{
Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node);
void on_tree_select_row_show_if_text(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+ gint /*column*/, gpointer data)
{
Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node);
- if ( repr->type() == Inkscape::XML::TEXT_NODE || repr->type() == Inkscape::XML::COMMENT_NODE ) {
+ if ( repr->type() == Inkscape::XML::TEXT_NODE || repr->type() == Inkscape::XML::COMMENT_NODE || repr->type() == Inkscape::XML::PI_NODE ) {
gtk_widget_show(GTK_WIDGET(data));
} else {
gtk_widget_hide(GTK_WIDGET(data));
}
-void on_tree_select_row_enable_if_mutable(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+void on_tree_select_row_enable_if_mutable(GtkCTree */*tree*/, GtkCTreeNode *node,
+ gint /*column*/, gpointer data)
{
gtk_widget_set_sensitive(GTK_WIDGET(data), xml_tree_node_mutable(node));
}
-void on_tree_unselect_row_disable(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+void on_tree_unselect_row_disable(GtkCTree */*tree*/, GtkCTreeNode */*node*/,
+ gint /*column*/, gpointer data)
{
gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE);
}
-void on_tree_unselect_row_hide(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+void on_tree_unselect_row_hide(GtkCTree */*tree*/, GtkCTreeNode */*node*/,
+ gint /*column*/, gpointer data)
{
gtk_widget_hide(GTK_WIDGET(data));
}
-void on_tree_unselect_row_clear_text(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+void on_tree_unselect_row_clear_text(GtkCTree */*tree*/, GtkCTreeNode */*node*/,
+ gint /*column*/, gpointer data)
{
if (GTK_IS_EDITABLE(data)) {
gtk_editable_delete_text(GTK_EDITABLE(data), 0, -1);
}
-void on_attr_select_row(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void on_attr_select_row(GtkCList *list, gint row, gint /*column*/,
+ GdkEventButton */*event*/, gpointer /*data*/)
{
selected_attr = sp_xmlview_attr_list_get_row_key(list, row);
gtk_window_set_focus(GTK_WINDOW(dlg), GTK_WIDGET(attr_value));
}
-void on_attr_unselect_row(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void on_attr_unselect_row(GtkCList */*list*/, gint /*row*/, gint /*column*/,
+ GdkEventButton */*event*/, gpointer /*data*/)
{
selected_attr = 0;
attr_reset_context(selected_attr);
}
-void on_attr_row_changed(GtkCList *list, gint row, gpointer data)
+void on_attr_row_changed(GtkCList *list, gint row, gpointer /*data*/)
{
gint attr = sp_xmlview_attr_list_get_row_key(list, row);
void on_attr_select_row_set_name_content(GtkCList *list, gint row,
- gint column, GdkEventButton *event,
+ gint /*column*/, GdkEventButton */*event*/,
gpointer data)
{
GtkEditable *editable = GTK_EDITABLE(data);
-void on_attr_select_row_set_value_content(GtkCList *list, gint row, gint column,
- GdkEventButton *event,
+void on_attr_select_row_set_value_content(GtkCList *list, gint row, gint /*column*/,
+ GdkEventButton */*event*/,
gpointer data)
{
GtkTextBuffer *tb = gtk_text_view_get_buffer(GTK_TEXT_VIEW(data));
@@ -1131,7 +1142,7 @@ void on_attr_select_row_set_value_content(GtkCList *list, gint row, gint column,
void on_tree_select_row_enable_if_indentable(GtkCTree *tree, GtkCTreeNode *node,
- gint column, gpointer data)
+ gint /*column*/, gpointer data)
{
gboolean indentable = FALSE;
@@ -1161,7 +1172,7 @@ void on_tree_select_row_enable_if_indentable(GtkCTree *tree, GtkCTreeNode *node,
void on_tree_select_row_enable_if_not_first_child(GtkCTree *tree,
GtkCTreeNode *node,
- gint column,
+ gint /*column*/,
gpointer data)
{
Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node);
void on_tree_select_row_enable_if_not_last_child(GtkCTree *tree,
GtkCTreeNode *node,
- gint column, gpointer data)
+ gint /*column*/, gpointer data)
{
Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node);
-void on_tree_select_row_enable_if_has_grandparent(GtkCTree *tree,
+void on_tree_select_row_enable_if_has_grandparent(GtkCTree */*tree*/,
GtkCTreeNode *node,
- gint column, gpointer data)
+ gint /*column*/, gpointer data)
{
GtkCTreeNode *parent = GTK_CTREE_ROW(node)->parent;
-void on_attr_select_row_enable(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void on_attr_select_row_enable(GtkCList */*list*/, gint /*row*/, gint /*column*/,
+ GdkEventButton */*event*/, gpointer data)
{
gtk_widget_set_sensitive(GTK_WIDGET(data), TRUE);
}
-void on_attr_unselect_row_disable(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void on_attr_unselect_row_disable(GtkCList */*list*/, gint /*row*/, gint /*column*/,
+ GdkEventButton */*event*/, gpointer data)
{
gtk_widget_set_sensitive(GTK_WIDGET(data), FALSE);
}
-void on_attr_unselect_row_clear_text(GtkCList *list, gint row, gint column,
- GdkEventButton *event, gpointer data)
+void on_attr_unselect_row_clear_text(GtkCList */*list*/, gint /*row*/, gint /*column*/,
+ GdkEventButton */*event*/, gpointer data)
{
if (GTK_IS_EDITABLE(data)) {
gtk_editable_delete_text(GTK_EDITABLE(data), 0, -1);
-void on_desktop_selection_changed(Inkscape::Selection *selection)
+void on_desktop_selection_changed(Inkscape::Selection */*selection*/)
{
if (!blocked++) {
set_tree_select(get_dt_select());
if (current_desktop)
sel_changed_connection.disconnect();
- sel_changed_connection = SP_DT_SELECTION(dt)->connectChanged(&on_desktop_selection_changed);
+ sel_changed_connection = sp_desktop_selection(dt)->connectChanged(&on_desktop_selection_changed);
set_tree_document(doc);
}
-void on_document_uri_set(gchar const *uri, SPDocument *document)
+void on_document_uri_set(gchar const */*uri*/, SPDocument *document)
{
gchar title[500];
sp_ui_dialog_title_string(Inkscape::Verb::get(SP_VERB_DIALOG_XML_EDITOR), title);
-void on_clicked_get_editable_text(GtkWidget *widget, gpointer data)
+void on_clicked_get_editable_text(GtkWidget */*widget*/, gpointer data)
{
EditableDest *dest = (EditableDest *) data;
dest->text = gtk_editable_get_chars(dest->editable, 0, -1);
}
+gboolean
+quit_on_esc (GtkWidget *w, GdkEventKey *event, GObject */*tbl*/)
+{
+ switch (get_group0_keyval (event)) {
+ case GDK_Escape: // defocus
+ gtk_widget_destroy(w);
+ return TRUE;
+ }
+ return FALSE;
+}
-
-void cmd_new_element_node(GtkObject *object, gpointer data)
+void cmd_new_element_node(GtkObject */*object*/, gpointer /*data*/)
{
EditableDest name;
GtkWidget *window, *create, *cancel, *vbox, *entry, *bbox, *sep;
gtk_window_set_transient_for(GTK_WINDOW(window), GTK_WINDOW(dlg));
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
gtk_signal_connect(GTK_OBJECT(window), "destroy", gtk_main_quit, NULL);
+ gtk_signal_connect(GTK_OBJECT(window), "key-press-event", G_CALLBACK(quit_on_esc), window);
vbox = gtk_vbox_new(FALSE, 4);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, TRUE, 0);
cancel = gtk_button_new_with_label(_("Cancel"));
+ GTK_WIDGET_SET_FLAGS( GTK_WIDGET(cancel),
+ GTK_CAN_DEFAULT );
gtk_signal_connect_object( GTK_OBJECT(cancel), "clicked",
G_CALLBACK(gtk_widget_destroy),
GTK_OBJECT(window) );
gtk_main();
- g_assert(selected_repr != NULL);
-
- if (name.text) {
+ if (selected_repr != NULL && name.text) {
+ Inkscape::XML::Document *xml_doc = sp_document_repr_doc(current_document);
Inkscape::XML::Node *new_repr;
- new_repr = sp_repr_new(name.text);
+ new_repr = xml_doc->createElement(name.text);
+ Inkscape::GC::release(new_repr);
g_free(name.text);
selected_repr->appendChild(new_repr);
set_tree_select(new_repr);
set_dt_select(new_repr);
+
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Create new element node"));
}
} // end of cmd_new_element_node()
-void cmd_new_text_node(GtkObject *object, gpointer data)
+void cmd_new_text_node(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
- Inkscape::XML::Node *text = sp_repr_new_text("");
+ Inkscape::XML::Document *xml_doc = sp_document_repr_doc(current_document);
+ Inkscape::XML::Node *text = xml_doc->createTextNode("");
selected_repr->appendChild(text);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Create new text node"));
set_tree_select(text);
set_dt_select(text);
}
-void cmd_duplicate_node(GtkObject *object, gpointer data)
+void cmd_duplicate_node(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
Inkscape::XML::Node *parent = sp_repr_parent(selected_repr);
- Inkscape::XML::Node *dup = selected_repr->duplicate();
+ Inkscape::XML::Node *dup = selected_repr->duplicate(parent->document());
parent->addChild(dup, selected_repr);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Duplicate node"));
GtkCTreeNode *node = sp_xmlview_tree_get_repr_node(SP_XMLVIEW_TREE(tree), dup);
-void cmd_delete_node(GtkObject *object, gpointer data)
+void cmd_delete_node(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
sp_repr_unparent(selected_repr);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Delete node"));
}
-void cmd_delete_attr(GtkObject *object, gpointer data)
+void cmd_delete_attr(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
g_assert(selected_attr != 0);
updated->updateRepr();
}
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Delete attribute"));
}
-void cmd_set_attr(GtkObject *object, gpointer data)
+void cmd_set_attr(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
gchar *value = gtk_text_buffer_get_text( gtk_text_view_get_buffer(attr_value),
&start, &end, TRUE );
- if (!sp_repr_set_attr(selected_repr, name, value)) {
- gchar *message = g_strdup_printf(_("Cannot set <b>%s</b>: Another element with value <b>%s</b> already exists!"), name, value);
- _message_stack->flash(Inkscape::WARNING_MESSAGE, message);
- g_free(message);
- }
+ selected_repr->setAttribute(name, value, false);
g_free(name);
g_free(value);
updated->updateRepr();
}
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Change attribute"));
/* TODO: actually, the row won't have been created yet. why? */
gint row = sp_xmlview_attr_list_find_row_from_key(GTK_CLIST(attributes),
-void cmd_raise_node(GtkObject *object, gpointer data)
+void cmd_raise_node(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
parent->changeOrder(selected_repr, ref);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Raise node"));
set_tree_select(selected_repr);
set_dt_select(selected_repr);
-void cmd_lower_node(GtkObject *object, gpointer data)
+void cmd_lower_node(GtkObject */*object*/, gpointer /*data*/)
{
g_assert(selected_repr != NULL);
g_return_if_fail(selected_repr->next() != NULL);
parent->changeOrder(selected_repr, selected_repr->next());
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Lower node"));
set_tree_select(selected_repr);
set_dt_select(selected_repr);
}
-void cmd_indent_node(GtkObject *object, gpointer data)
+void cmd_indent_node(GtkObject */*object*/, gpointer /*data*/)
{
Inkscape::XML::Node *repr = selected_repr;
g_assert(repr != NULL);
parent->removeChild(repr);
prev->addChild(repr, ref);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Indent node"));
set_tree_select(repr);
set_dt_select(repr);
-void cmd_unindent_node(GtkObject *object, gpointer data)
+void cmd_unindent_node(GtkObject */*object*/, gpointer /*data*/)
{
Inkscape::XML::Node *repr = selected_repr;
g_assert(repr != NULL);
parent->removeChild(repr);
grandparent->addChild(repr, parent);
- sp_document_done(current_document);
+ sp_document_done(current_document, SP_VERB_DIALOG_XML_EDITOR,
+ _("Unindent node"));
set_tree_select(repr);
set_dt_select(repr);