static void update_bookmark_from_text (void) { if (text_changed) { NautilusBookmark *bookmark, *bookmark_in_list; char *name; GdkPixbuf *pixbuf; guint selected_row; GtkTreeIter iter; GFile *location; g_assert (GTK_IS_ENTRY (name_field)); g_assert (GTK_IS_ENTRY (uri_field)); location = g_file_new_for_uri (gtk_entry_get_text (GTK_ENTRY (uri_field))); bookmark = nautilus_bookmark_new_with_icon (location, gtk_entry_get_text (GTK_ENTRY (name_field)), name_text_changed, NULL); g_object_unref (location); selected_row = get_selected_row (); /* turn off list updating 'cuz otherwise the list-reordering code runs * after repopulate(), thus reordering the correctly-ordered list. */ g_signal_handler_block (bookmarks, bookmark_list_changed_signal_id); nautilus_bookmark_list_delete_item_at (bookmarks, selected_row); nautilus_bookmark_list_insert_item (bookmarks, bookmark, selected_row); g_signal_handler_unblock (bookmarks, bookmark_list_changed_signal_id); g_object_unref (bookmark); /* We also have to update the bookmark pointer in the list store. */ gtk_tree_selection_get_selected (bookmark_selection, NULL, &iter); g_signal_handler_block (bookmark_list_store, row_changed_signal_id); bookmark_in_list = nautilus_bookmark_list_item_at (bookmarks, selected_row); name = nautilus_bookmark_get_name (bookmark_in_list); pixbuf = nautilus_bookmark_get_pixbuf (bookmark_in_list, GTK_ICON_SIZE_MENU); gtk_list_store_set (bookmark_list_store, &iter, BOOKMARK_LIST_COLUMN_BOOKMARK, bookmark_in_list, BOOKMARK_LIST_COLUMN_NAME, name, BOOKMARK_LIST_COLUMN_ICON, pixbuf, -1); g_signal_handler_unblock (bookmark_list_store, row_changed_signal_id); gdk_pixbuf_unref (pixbuf); g_free (name); } }
static void update_bookmark_from_text (NautilusBookmarksWindow *self) { NautilusBookmark *bookmark, *bookmark_in_list; const char *name; GIcon *icon; guint selected_row; GtkTreeIter iter; GFile *location; if (!self->priv->text_changed || gtk_entry_get_text_length (GTK_ENTRY (self->priv->uri_field)) == 0) { return; } location = g_file_parse_name (gtk_entry_get_text (GTK_ENTRY (self->priv->uri_field))); bookmark = nautilus_bookmark_new (location, self->priv->name_text_changed ? gtk_entry_get_text (GTK_ENTRY (self->priv->name_field)) : NULL, NULL); g_object_unref (location); selected_row = get_selected_row (self); /* turn off list updating 'cuz otherwise the list-reordering code runs * after repopulate(), thus reordering the correctly-ordered list. */ g_signal_handler_block (self->priv->bookmarks, self->priv->bookmarks_changed_id); nautilus_bookmark_list_delete_item_at (self->priv->bookmarks, selected_row); nautilus_bookmark_list_insert_item (self->priv->bookmarks, bookmark, selected_row); g_signal_handler_unblock (self->priv->bookmarks, self->priv->bookmarks_changed_id); g_object_unref (bookmark); /* We also have to update the bookmark pointer in the list store. */ gtk_tree_selection_get_selected (self->priv->selection, NULL, &iter); g_signal_handler_block (self->priv->model, self->priv->row_changed_id); bookmark_in_list = nautilus_bookmark_list_item_at (self->priv->bookmarks, selected_row); name = nautilus_bookmark_get_name (bookmark_in_list); icon = nautilus_bookmark_get_icon (bookmark_in_list); gtk_list_store_set (self->priv->model, &iter, BOOKMARK_LIST_COLUMN_BOOKMARK, bookmark_in_list, BOOKMARK_LIST_COLUMN_NAME, name, BOOKMARK_LIST_COLUMN_ICON, icon, -1); g_signal_handler_unblock (self->priv->model, self->priv->row_changed_id); g_object_unref (icon); }
static void on_row_deleted (GtkListStore *store, GtkTreePath *path, gpointer user_data) { gint *indices, row; indices = gtk_tree_path_get_indices (path); row = indices[0]; g_signal_handler_block (bookmarks, bookmark_list_changed_signal_id); nautilus_bookmark_list_delete_item_at (bookmarks, row); g_signal_handler_unblock (bookmarks, bookmark_list_changed_signal_id); }
static void on_row_deleted (GtkListStore *store, GtkTreePath *path, gpointer user_data) { NautilusBookmarksWindow *self = user_data; gint *indices, row; indices = gtk_tree_path_get_indices (path); row = indices[0]; g_signal_handler_block (self->priv->bookmarks, self->priv->bookmarks_changed_id); nautilus_bookmark_list_delete_item_at (self->priv->bookmarks, row); g_signal_handler_unblock (self->priv->bookmarks, self->priv->bookmarks_changed_id); }