[gtk+] GtkPlacesSidebar: Fix editing of bookmarks



commit 155c45eba5a92e8b2b4cc131817f58badf7d6826
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Jul 23 14:11:22 2014 -0400

    GtkPlacesSidebar: Fix editing of bookmarks
    
    This was silently broken - the code was just assuming that the
    text cell renderer is item no. 6 on the list of all cells. That
    doesn't work so well if the cell renderers are set up elsewhere
    and get rearranged.
    
    Fix this by keeping an explicit pointer to the the text cell.

 gtk/gtkplacessidebar.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
index 3f6ea69..20d8ad8 100644
--- a/gtk/gtkplacessidebar.c
+++ b/gtk/gtkplacessidebar.c
@@ -126,6 +126,7 @@ struct _GtkPlacesSidebar {
 
   GtkTreeView       *tree_view;
   GtkCellRenderer   *eject_icon_cell_renderer;
+  GtkCellRenderer   *text_cell_renderer;
   GtkListStore      *store;
   GtkBookmarksManager     *bookmarks_manager;
   GVolumeMonitor    *volume_monitor;
@@ -2462,8 +2463,6 @@ rename_selected_bookmark (GtkPlacesSidebar *sidebar)
   GtkTreeIter iter;
   GtkTreePath *path;
   GtkTreeViewColumn *column;
-  GtkCellRenderer *cell;
-  GList *renderers;
   PlaceType type;
 
   if (get_selected_iter (sidebar, &iter))
@@ -2477,12 +2476,9 @@ rename_selected_bookmark (GtkPlacesSidebar *sidebar)
 
       path = gtk_tree_model_get_path (GTK_TREE_MODEL (sidebar->store), &iter);
       column = gtk_tree_view_get_column (GTK_TREE_VIEW (sidebar->tree_view), 0);
-      renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
-      cell = g_list_nth_data (renderers, 6);
-      g_list_free (renderers);
-      g_object_set (cell, "editable", TRUE, NULL);
+      g_object_set (sidebar->text_cell_renderer, "editable", TRUE, NULL);
       gtk_tree_view_set_cursor_on_cell (GTK_TREE_VIEW (sidebar->tree_view),
-                                        path, column, cell, TRUE);
+                                        path, column, sidebar->text_cell_renderer, TRUE);
       gtk_tree_path_free (path);
     }
 }
@@ -3812,6 +3808,7 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
 
   /* normal text renderer */
   cell = gtk_cell_renderer_text_new ();
+  sidebar->text_cell_renderer = cell;
   gtk_tree_view_column_pack_start (col, cell, TRUE);
   g_object_set (G_OBJECT (cell), "editable", FALSE, NULL);
   gtk_tree_view_column_set_attributes (col, cell,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]