From dcda11ad8115fd98fb00947e0f6d40c59def8c3e Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Tue, 3 Apr 2012 23:59:33 -0700 Subject: Warning cleanup. (bzr r11144) --- src/ui/dialog/xml-tree.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index ae1ebf5ca..51aea2935 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -509,9 +509,9 @@ void XmlTree::set_dt_select(Inkscape::XML::Node *repr) void XmlTree::on_tree_select_row(GtkCTree *tree, - GtkCTreeNode *node, - gint column, - gpointer data) + GtkCTreeNode *node, + gint /*column*/, + gpointer data) { XmlTree *self = (XmlTree *)data; @@ -535,9 +535,9 @@ void XmlTree::on_tree_select_row(GtkCTree *tree, } void XmlTree::on_tree_unselect_row(GtkCTree *tree, - GtkCTreeNode *node, - gint column, - gpointer data) + GtkCTreeNode *node, + gint /*column*/, + gpointer data) { XmlTree *self = (XmlTree *)data; @@ -764,7 +764,7 @@ void XmlTree::on_attr_select_row(GtkTreeSelection *selection, gpointer data) } -void XmlTree::on_attr_row_changed(SPXMLViewAttrList *attributes, const gchar * name, gpointer data) +void XmlTree::on_attr_row_changed(SPXMLViewAttrList *attributes, const gchar * name, gpointer /*data*/) { // Reselect the selected row if the data changes to refresh the attribute and value edit boxes. GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(attributes)); @@ -821,7 +821,7 @@ void XmlTree::on_document_replaced(SPDesktop *dt, SPDocument *doc) set_tree_document(doc); } -void XmlTree::on_document_uri_set(gchar const */*uri*/, SPDocument *document) +void XmlTree::on_document_uri_set(gchar const * /*uri*/, SPDocument * /*document*/) { /* * Seems to be no way to set the title on a docked dialog -- cgit v1.2.3 From d03872f4a6134627171a13e000c32648c412e100 Mon Sep 17 00:00:00 2001 From: Kris De Gussem Date: Wed, 4 Apr 2012 20:36:46 +0200 Subject: cppcheck (bzr r11149) --- src/ui/dialog/xml-tree.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 51aea2935..357114626 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -513,7 +513,7 @@ void XmlTree::on_tree_select_row(GtkCTree *tree, gint /*column*/, gpointer data) { - XmlTree *self = (XmlTree *)data; + XmlTree *self = static_cast(data); Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node); g_assert(repr != NULL); @@ -539,7 +539,7 @@ void XmlTree::on_tree_unselect_row(GtkCTree *tree, gint /*column*/, gpointer data) { - XmlTree *self = (XmlTree *)data; + XmlTree *self = static_cast(data); if (self->blocked) { return; @@ -569,7 +569,7 @@ void XmlTree::after_tree_move(GtkCTree */*tree*/, GtkCTreeNode *new_sibling, gpointer data) { - XmlTree *self = (XmlTree *)data; + XmlTree *self = static_cast(data); if (GTK_CTREE_ROW(node)->parent == new_parent && GTK_CTREE_ROW(node)->sibling == new_sibling) @@ -732,7 +732,7 @@ void XmlTree::on_tree_unselect_row_hide() void XmlTree::on_attr_select_row(GtkTreeSelection *selection, gpointer data) { - XmlTree *self = (XmlTree *)data; + XmlTree *self = static_cast(data); GtkTreeIter iter; GtkTreeModel *model; @@ -899,7 +899,7 @@ void XmlTree::cmd_new_element_node() gchar *new_name = g_strdup(name_entry->get_text().c_str()); - if (selected_repr != NULL && new_name) { + if (new_name) { Inkscape::XML::Document *xml_doc = current_document->getReprDoc(); Inkscape::XML::Node *new_repr; new_repr = xml_doc->createElement(new_name); -- cgit v1.2.3 From 0013e55cc6f1d51657518c5f863e2c24b223065b Mon Sep 17 00:00:00 2001 From: John Smith Date: Wed, 11 Apr 2012 22:15:03 +0900 Subject: Fix for 903676 : Replace GtkCList with GtkTreeView in XML Tree, 64bitLion crash fix (bzr r11220) --- src/ui/dialog/xml-tree.cpp | 40 ++++++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 357114626..7efddc3cc 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -65,7 +65,6 @@ XmlTree::XmlTree (void) : attributes (NULL), content (NULL), attr_name (), - attr_value (), status (""), tree_toolbar(), xml_element_new_button ( _("New element node")), @@ -747,21 +746,27 @@ void XmlTree::on_attr_select_row(GtkTreeSelection *selection, gpointer data) return; } - self->attr_value.grab_focus (); - - self->xml_attribute_delete_button.set_sensitive(true); - - const gchar *name; - const gchar *value; - gint attr; - gtk_tree_model_get (model, &iter, 0, &name, 1, &value, 2, &attr, -1); + gchar *name = 0; + gchar *value = 0; + guint attr = 0; + gtk_tree_model_get (model, &iter, ATTR_COL_NAME, &name, ATTR_COL_VALUE, &value, ATTR_COL_ATTR, &attr, -1); self->attr_name.set_text(name); self->attr_value.get_buffer()->set_text(value); - self->selected_attr = attr; + self->attr_value.grab_focus (); + self->xml_attribute_delete_button.set_sensitive(true); + + self->selected_attr = attr; self->attr_reset_context(self->selected_attr); + if (name) { + g_free(name); + } + + if (value) { + g_free(value); + } } void XmlTree::on_attr_row_changed(SPXMLViewAttrList *attributes, const gchar * name, gpointer /*data*/) @@ -770,14 +775,21 @@ void XmlTree::on_attr_row_changed(SPXMLViewAttrList *attributes, const gchar * n GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(attributes)); GtkTreeIter iter; GtkTreeModel *model; - const gchar *attr_name; + gchar *attr_name = 0; if (gtk_tree_selection_get_selected (selection, &model, &iter)) { gtk_tree_model_get (model, &iter, 0, &attr_name, -1); - if (!strcmp(name, attr_name)) { - gtk_tree_selection_unselect_all(selection); - gtk_tree_selection_select_iter(selection, &iter); + if (gtk_list_store_iter_is_valid(GTK_LIST_STORE(model), &iter) ) { + if (!strcmp(name, attr_name)) { + gtk_tree_selection_unselect_all(selection); + gtk_tree_selection_select_iter(selection, &iter); + } } } + + if (attr_name) { + g_free(attr_name); + attr_name = 0; + } } void XmlTree::on_attr_unselect_row_clear_text() -- cgit v1.2.3 From 13a3d964eaa45df96ade62dd63783952f8af4a12 Mon Sep 17 00:00:00 2001 From: John Smith Date: Wed, 11 Apr 2012 22:56:02 +0900 Subject: Fix for 903676 : Replace GtkCTree with GtkTreeView in XML Tree (bzr r11221) --- src/ui/dialog/xml-tree.cpp | 152 ++++++++++++++++++++++----------------------- 1 file changed, 74 insertions(+), 78 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 7efddc3cc..512cb139d 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -166,6 +166,7 @@ XmlTree::XmlTree (void) : Gtk::ScrolledWindow *tree_scroller = new Gtk::ScrolledWindow(); tree_scroller->set_policy( Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC ); + tree_scroller->set_shadow_type(Gtk::SHADOW_IN); tree_scroller->add(*Gtk::manage(Glib::wrap(GTK_WIDGET(tree)))); left_box.pack_start(*tree_scroller); @@ -226,11 +227,11 @@ XmlTree::XmlTree (void) : text_container.add(*Gtk::manage(Glib::wrap(GTK_WIDGET(content)))); /* Signal handlers */ - g_signal_connect( G_OBJECT(tree), "tree_select_row", G_CALLBACK(on_tree_select_row), this ); - g_signal_connect( G_OBJECT(tree), "tree_unselect_row", G_CALLBACK(on_tree_unselect_row), this); + GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(tree)); + g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK (on_tree_select_row), this); g_signal_connect_after( G_OBJECT(tree), "tree_move", G_CALLBACK(after_tree_move), this); - GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(attributes)); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(attributes)); g_signal_connect (G_OBJECT(selection), "changed", G_CALLBACK (on_attr_select_row), this); g_signal_connect( G_OBJECT(attributes), "row-value-changed", G_CALLBACK(on_attr_row_changed), this); @@ -286,8 +287,6 @@ XmlTree::~XmlTree (void) Inkscape::GC::release(_message_stack); _message_stack = NULL; _message_changed_connection.~connection(); - - //status = ""; } void XmlTree::setDesktop(SPDesktop *desktop) @@ -393,8 +392,6 @@ void XmlTree::set_tree_repr(Inkscape::XML::Node *repr) return; } - gtk_clist_freeze(GTK_CLIST(tree)); - sp_xmlview_tree_set_repr(tree, repr); if (repr) { set_tree_select(get_dt_select()); @@ -402,8 +399,6 @@ void XmlTree::set_tree_repr(Inkscape::XML::Node *repr) set_tree_select(NULL); } - gtk_clist_thaw(GTK_CLIST(tree)); - propagate_tree_select(selected_repr); } @@ -418,26 +413,29 @@ void XmlTree::set_tree_select(Inkscape::XML::Node *repr) selected_repr = repr; if (repr) { - GtkCTreeNode *node; + GtkTreeIter node; Inkscape::GC::anchor(selected_repr); - node = sp_xmlview_tree_get_repr_node(SP_XMLVIEW_TREE(tree), repr); - if (node) { - GtkCTreeNode *parent; + if (sp_xmlview_tree_get_repr_node(SP_XMLVIEW_TREE(tree), repr, &node)) { - gtk_ctree_select(GTK_CTREE(tree), node); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + gtk_tree_selection_unselect_all (selection); - parent = GTK_CTREE_ROW(node)->parent; - while (parent) { - gtk_ctree_expand(GTK_CTREE(tree), parent); - parent = GTK_CTREE_ROW(parent)->parent; - } + GtkTreePath* path = gtk_tree_model_get_path(GTK_TREE_MODEL(tree->store), &node); + gtk_tree_view_expand_to_path (GTK_TREE_VIEW(tree), path); + gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW(tree), path, NULL, TRUE, 0.66, 0.0); + gtk_tree_path_free(path); + + gtk_tree_selection_select_iter(selection, &node); - gtk_ctree_node_moveto(GTK_CTREE(tree), node, 0, 0.66, 0.0); + } else { + g_message("XmlTree::set_tree_select : Couldnt find repr node"); } } else { - gtk_clist_unselect_all(GTK_CLIST(tree)); + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + gtk_tree_selection_unselect_all (selection); + on_tree_unselect_row_disable(); on_tree_unselect_row_hide(); } @@ -507,77 +505,70 @@ void XmlTree::set_dt_select(Inkscape::XML::Node *repr) } // end of set_dt_select() -void XmlTree::on_tree_select_row(GtkCTree *tree, +/*void XmlTree::on_tree_select_row(GtkCTree *tree, GtkCTreeNode *node, - gint /*column*/, - gpointer data) + gint column, + gpointer data)*/ +void XmlTree::on_tree_select_row(GtkTreeSelection *selection, gpointer data) { XmlTree *self = static_cast(data); - Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node); - g_assert(repr != NULL); + GtkTreeIter iter; + GtkTreeModel *model; if (self->selected_repr) { Inkscape::GC::release(self->selected_repr); self->selected_repr = NULL; } - self->selected_repr = repr; - Inkscape::GC::anchor(self->selected_repr); - self->propagate_tree_select(self->selected_repr); - - self->set_dt_select(self->selected_repr); - self->tree_reset_context(); + if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { + // Nothing selected, update widgets + self->propagate_tree_select(NULL); + self->set_dt_select(NULL); + self->on_tree_unselect_row_disable(); + self->on_tree_unselect_row_hide(); + self->on_attr_unselect_row_clear_text(); + return; + } - self->on_tree_select_row_enable(node); -} + Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(GTK_TREE_VIEW(self->tree), &iter); + g_assert(repr != NULL); -void XmlTree::on_tree_unselect_row(GtkCTree *tree, - GtkCTreeNode *node, - gint /*column*/, - gpointer data) -{ - XmlTree *self = static_cast(data); - if (self->blocked) { - return; - } + self->selected_repr = repr; + Inkscape::GC::anchor(self->selected_repr); + self->propagate_tree_select(self->selected_repr); - Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node); - self->propagate_tree_select(NULL); - self->set_dt_select(NULL); + self->set_dt_select(self->selected_repr); - if (self->selected_repr && (self->selected_repr == repr)) { - Inkscape::GC::release(self->selected_repr); - self->selected_repr = NULL; - self->selected_attr = 0; - } + self->tree_reset_context(); - self->on_tree_unselect_row_disable(); - self->on_tree_unselect_row_hide(); - self->on_attr_unselect_row_clear_text(); + self->on_tree_select_row_enable(&iter); } +void XmlTree::after_tree_move(SPXMLViewTree *attributes, gpointer value, gpointer data) -void XmlTree::after_tree_move(GtkCTree */*tree*/, - GtkCTreeNode *node, - GtkCTreeNode *new_parent, - GtkCTreeNode *new_sibling, - gpointer data) { XmlTree *self = static_cast(data); + guint val = GPOINTER_TO_UINT(value); - if (GTK_CTREE_ROW(node)->parent == new_parent && - GTK_CTREE_ROW(node)->sibling == new_sibling) - { + if (val) { DocumentUndo::done(self->current_document, SP_VERB_DIALOG_XML_EDITOR, - _("Drag XML subtree")); + _("Drag XML subtree")); } else { - DocumentUndo::cancel(self->current_document); + //DocumentUndo::cancel(self->current_document); + /* + * There was a problem with drag & drop, + * data is probably not synchronized, so reload the tree + */ + SPDocument *document = self->current_document; + self->set_tree_document(NULL); + self->set_tree_document(document); } + } void XmlTree::_set_status_message(Inkscape::MessageType /*type*/, const gchar *message, GtkWidget *widget) @@ -587,13 +578,13 @@ void XmlTree::_set_status_message(Inkscape::MessageType /*type*/, const gchar *m } } -void XmlTree::on_tree_select_row_enable(GtkCTreeNode *node) +void XmlTree::on_tree_select_row_enable(GtkTreeIter *node) { if (!node) { return; } - Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node); + Inkscape::XML::Node *repr = sp_xmlview_tree_node_get_repr(GTK_TREE_VIEW(tree), node); Inkscape::XML::Node *parent=repr->parent(); //on_tree_select_row_enable_if_mutable @@ -612,11 +603,10 @@ void XmlTree::on_tree_select_row_enable(GtkCTreeNode *node) //on_tree_select_row_enable_if_has_grandparent { - GtkCTreeNode *parent = GTK_CTREE_ROW(node)->parent; - - if (parent) { - GtkCTreeNode *grandparent = GTK_CTREE_ROW(parent)->parent; - if (grandparent) { + GtkTreeIter parent; + if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(tree->store), &parent, node)) { + GtkTreeIter grandparent; + if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(tree->store), &grandparent, &parent)) { unindent_node_button.set_sensitive(true); } else { unindent_node_button.set_sensitive(false); @@ -682,20 +672,23 @@ void XmlTree::on_tree_select_row_enable(GtkCTreeNode *node) } -gboolean XmlTree::xml_tree_node_mutable(GtkCTreeNode *node) +gboolean XmlTree::xml_tree_node_mutable(GtkTreeIter *node) { // top-level is immutable, obviously - if (!GTK_CTREE_ROW(node)->parent) { + GtkTreeIter parent; + if (!gtk_tree_model_iter_parent(GTK_TREE_MODEL(tree->store), &parent, node)) { return false; } + // if not in base level (where namedview, defs, etc go), we're mutable - if (GTK_CTREE_ROW(GTK_CTREE_ROW(node)->parent)->parent) { + GtkTreeIter child; + if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(tree->store), &child, &parent)) { return true; } Inkscape::XML::Node *repr; - repr = sp_xmlview_tree_node_get_repr(SP_XMLVIEW_TREE(tree), node); + repr = sp_xmlview_tree_node_get_repr(GTK_TREE_VIEW(tree), node); g_assert(repr); // don't let "defs" or "namedview" disappear @@ -958,10 +951,13 @@ void XmlTree::cmd_duplicate_node() DocumentUndo::done(current_document, SP_VERB_DIALOG_XML_EDITOR, _("Duplicate node")); - GtkCTreeNode *node = sp_xmlview_tree_get_repr_node(SP_XMLVIEW_TREE(tree), dup); + GtkTreeIter node; + + if (sp_xmlview_tree_get_repr_node(SP_XMLVIEW_TREE(tree), dup, &node)) { + GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree)); + gtk_tree_selection_select_iter(selection, &node); + } else { - if (node) { - gtk_ctree_select(GTK_CTREE(tree), node); } } -- cgit v1.2.3 From 6b96d34a06bea7e677e0c853606916f5f71bf234 Mon Sep 17 00:00:00 2001 From: "Jon A. Cruz" Date: Wed, 11 Apr 2012 22:52:40 -0700 Subject: Warning cleanup. (bzr r11231) --- src/ui/dialog/xml-tree.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 512cb139d..20460474b 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -549,8 +549,7 @@ void XmlTree::on_tree_select_row(GtkTreeSelection *selection, gpointer data) } -void XmlTree::after_tree_move(SPXMLViewTree *attributes, gpointer value, gpointer data) - +void XmlTree::after_tree_move(SPXMLViewTree * /*attributes*/, gpointer value, gpointer data) { XmlTree *self = static_cast(data); guint val = GPOINTER_TO_UINT(value); @@ -568,7 +567,6 @@ void XmlTree::after_tree_move(SPXMLViewTree *attributes, gpointer value, gpointe self->set_tree_document(NULL); self->set_tree_document(document); } - } void XmlTree::_set_status_message(Inkscape::MessageType /*type*/, const gchar *message, GtkWidget *widget) -- cgit v1.2.3 From 0024197c76bca50d557edc2824646a636d695c4d Mon Sep 17 00:00:00 2001 From: Alex Valavanis Date: Sun, 15 Apr 2012 01:17:25 +0100 Subject: Get rid of remaining deprecated GDK Key symbols (bzr r11250) --- src/ui/dialog/xml-tree.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/ui/dialog/xml-tree.cpp') diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index 20460474b..5c39a2b22 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -48,6 +48,11 @@ #include "widgets/sp-xmlview-content.h" #include "widgets/sp-xmlview-tree.h" +#if !GTK_CHECK_VERSION(2,22,0) +#define GDK_KEY_Escape 0xff1b +#define GDK_KEY_Return 0xff0d +#endif + namespace Inkscape { namespace UI { namespace Dialog { @@ -334,7 +339,7 @@ bool XmlTree::sp_xml_tree_key_press(GdkEventKey *event) /* fixme: if you need to add more xml-tree-specific callbacks, you should probably upgrade * the sp_shortcut mechanism to take into account windows. */ - if (shortcut == (SP_SHORTCUT_CONTROL_MASK | GDK_Return)) { + if (shortcut == (SP_SHORTCUT_CONTROL_MASK | GDK_KEY_Return)) { cmd_set_attr(); return true; } @@ -839,7 +844,7 @@ void XmlTree::on_document_uri_set(gchar const * /*uri*/, SPDocument * /*document gboolean XmlTree::quit_on_esc (GtkWidget *w, GdkEventKey *event, GObject */*tbl*/) { switch (get_group0_keyval (event)) { - case GDK_Escape: // defocus + case GDK_KEY_Escape: // defocus gtk_widget_destroy(w); return TRUE; } -- cgit v1.2.3