Public feed #726724

Unnamed

public text v1 · immutable
Raw Edit
·published 2007-10-05 13:30 UTC
rendered paste body
Index: src/nautilus-emblem-sidebar.c
===================================================================
--- src/nautilus-emblem-sidebar.c	(revisione 13269)
+++ src/nautilus-emblem-sidebar.c	(copia locale)
@@ -727,12 +727,13 @@ nautilus_emblem_sidebar_drag_received_cb
 	Emblem *emblem;
 	GdkPixbuf *pixbuf;
 	char *uri, *error, *uri_utf8;
-	GList *uris, *l;
+	char **uris;
+	int i;
 	gboolean had_failure;
 
 	had_failure = FALSE;
 	emblems = NULL;
-	
+
 	switch (info) {
 	case TARGET_URI_LIST:
 		if (data->format != 8 ||
@@ -742,12 +743,13 @@ nautilus_emblem_sidebar_drag_received_cb
 			return;
 		}
 
-		uris = nautilus_icon_dnd_uri_list_extract_uris (data->data);
-		l = uris;
-		while (l != NULL) {
-			uri = eel_make_uri_canonical (l->data);
-			l = l->next;
+		uris = g_uri_list_extract_uris (data->data);
+		if (uris == NULL) {
+			break;
+		}
 
+		for (i = 0; uris[i] != NULL; ++i) {
+			uri = eel_make_uri_canonical (uris[i]);
 			if (uri == NULL) {
 				had_failure = TRUE;
 				continue;
@@ -771,7 +773,8 @@ nautilus_emblem_sidebar_drag_received_cb
 
 			emblems = g_slist_prepend (emblems, emblem);
 		}
-		nautilus_icon_dnd_uri_list_free_strings (uris);
+
+		g_strfreev (uris);
 
 		if (had_failure && emblems != NULL) {
 			eel_show_error_dialog (_("Some of the files could not be added as emblems."), _("The emblems do not appear to be valid images."), NULL);
@@ -842,16 +845,15 @@ nautilus_emblem_sidebar_drag_received_cb
 		/* apparently, this is a URI/title pair?  or just a pair
 		 * of identical URIs?  Regardless, this seems to work...
 		 */
-		uris = nautilus_icon_dnd_uri_list_extract_uris (data->data);
 
+		uris = g_uri_list_extract_uris (data->data);
 		if (uris == NULL) {
 			break;
 		}
-		
-		uri = uris->data;
 
+		uri = uris[0];
 		if (uri == NULL) {
-			nautilus_icon_dnd_uri_list_free_strings (uris);
+			g_strfreev (uris);
 			break;
 		}
 
@@ -874,6 +876,9 @@ nautilus_emblem_sidebar_drag_received_cb
 			eel_show_error_dialog (_("The emblem cannot be added."), error, NULL);
 			g_free (error);
 		}
+
+		g_strfreev (uris);
+
 		break;
 	}
 }
Index: src/nautilus-location-bar.c
===================================================================
--- src/nautilus-location-bar.c	(revisione 13269)
+++ src/nautilus-location-bar.c	(copia locale)
@@ -117,7 +117,7 @@ drag_data_received_callback (GtkWidget *
 		             guint32 time,
 			     gpointer callback_data)
 {
-	GList *names, *node;
+	char **names;
 	NautilusApplication *application;
 	int name_count;
 	NautilusWindow *new_window;
@@ -131,9 +131,9 @@ drag_data_received_callback (GtkWidget *
 	g_assert (data != NULL);
 	g_assert (callback_data == NULL);
 
-	names = nautilus_icon_dnd_uri_list_extract_uris (data->data);
+	names = g_uri_list_extract_uris (data->data);
 
-	if (names == NULL) {
+	if (names == NULL || *names == NULL) {
 		g_warning ("No D&D URI's");
 		gtk_drag_finish (context, FALSE, FALSE, time);
 		return;
@@ -145,7 +145,7 @@ drag_data_received_callback (GtkWidget *
 	 * for multiple dropped URIs. This is likely to have been
 	 * a mistake.
 	 */
-	name_count = g_list_length (names);
+	name_count = g_strv_length (names);
 	if (name_count > 1) {
 		prompt = g_strdup_printf (ngettext("Do you want to view %d location?",
 						   "Do you want to view %d locations?",
@@ -176,20 +176,22 @@ drag_data_received_callback (GtkWidget *
 	}
 
 	nautilus_navigation_bar_set_location (NAUTILUS_NAVIGATION_BAR (widget),
-					      names->data);	
+					      names[0]);	
 	nautilus_navigation_bar_location_changed (NAUTILUS_NAVIGATION_BAR (widget));
 
 	if (new_windows_for_extras) {
+		int i;
+
 		application = NAUTILUS_WINDOW (window)->application;
 		screen = gtk_window_get_screen (GTK_WINDOW (window));
 
-		for (node = names->next; node != NULL; node = node->next) {
+		for (i = 1; names[i] != NULL; ++i) {
 			new_window = nautilus_application_create_navigation_window (application, NULL, screen);
-			nautilus_window_go_to (new_window, node->data);
+			nautilus_window_go_to (new_window, names[i]);
 		}
 	}
 
-	nautilus_icon_dnd_uri_list_free_strings (names);
+	g_strfreev (names);
 
 	gtk_drag_finish (context, TRUE, FALSE, time);
 }
Index: libnautilus-private/nautilus-icon-dnd.c
===================================================================
--- libnautilus-private/nautilus-icon-dnd.c	(revisione 13269)
+++ libnautilus-private/nautilus-icon-dnd.c	(copia locale)
@@ -1639,74 +1639,6 @@ nautilus_icon_dnd_end_drag (NautilusIcon
 	 */
 }
 
-/**
- * implements the gnome 1.x gnome_vfs_uri_list_extract_uris(), which
- * returns a GList of char *uris.
- **/
-GList *
-nautilus_icon_dnd_uri_list_extract_uris (const char *uri_list)
-{
-	/* Note that this is mostly very stolen from old libgnome/gnome-mime.c */
-
-	const gchar *p, *q;
-	gchar *retval;
-	GList *result = NULL;
-
-	g_return_val_if_fail (uri_list != NULL, NULL);
-
-	p = uri_list;
-
-	/* We don't actually try to validate the URI according to RFC
-	 * 2396, or even check for allowed characters - we just ignore
-	 * comments and trim whitespace off the ends.  We also
-	 * allow LF delimination as well as the specified CRLF.
-	 */
-	while (p != NULL) {
-		if (*p != '#') {
-			while (g_ascii_isspace (*p))
-				p++;
-
-			q = p;
-			while ((*q != '\0')
-			       && (*q != '\n')
-			       && (*q != '\r'))
-				q++;
-
-			if (q > p) {
-				q--;
-				while (q > p
-				       && g_ascii_isspace (*q))
-					q--;
-
-				retval = g_malloc (q - p + 2);
-				strncpy (retval, p, q - p + 1);
-				retval[q - p + 1] = '\0';
-
-				result = g_list_prepend (result, retval);
-			}
-		}
-		p = strchr (p, '\n');
-		if (p != NULL)
-			p++;
-	}
-
-	return g_list_reverse (result);
-}
-
-/**
- * nautilus_icon_dnd_uri_list_free_strings:
- * @list: A GList returned by nautilus_icon_dnd_uri_list_extract_uris()
- *
- * Releases all of the resources allocated by @list.
- * 
- * stolen from gnome-mime.c
- */
-void
-nautilus_icon_dnd_uri_list_free_strings (GList *list)
-{
-	eel_g_list_free_deep (list);
-}
-
 /** this callback is called in 2 cases.
     It is called upon drag_motion events to get the actual data 
     In that case, it just makes sure it gets the data.
Index: libnautilus-private/nautilus-icon-dnd.h
===================================================================
--- libnautilus-private/nautilus-icon-dnd.h	(revisione 13269)
+++ libnautilus-private/nautilus-icon-dnd.h	(copia locale)
@@ -59,7 +59,4 @@ void   nautilus_icon_dnd_begin_drag     
 						int                    start_y);
 void   nautilus_icon_dnd_end_drag              (NautilusIconContainer *container);
 
-GList *nautilus_icon_dnd_uri_list_extract_uris (const char            *uri_list);
-void   nautilus_icon_dnd_uri_list_free_strings (GList                 *list);
-
 #endif /* NAUTILUS_ICON_DND_H */