diff libpurple/request.c @ 29821:50dbd779f1bb

Deprecate purple_request_field_list_add() in favor of the new purple_request_field_list_add_icon() which now works whether or not icons are being provided.
author Richard Laager <rlaager@wiktel.com>
date Sun, 16 Nov 2008 10:10:17 +0000
parents 2d04fb25c6db
children cc1e35fa774d
line wrap: on
line diff
--- a/libpurple/request.c	Sun Nov 16 10:06:26 2008 +0000
+++ b/libpurple/request.c	Sun Nov 16 10:10:17 2008 +0000
@@ -823,14 +823,7 @@
 purple_request_field_list_add(PurpleRequestField *field, const char *item,
 							void *data)
 {
-	g_return_if_fail(field != NULL);
-	g_return_if_fail(item  != NULL);
-	g_return_if_fail(data  != NULL);
-	g_return_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST);
-
-	field->u.list.items = g_list_append(field->u.list.items, g_strdup(item));
-
-	g_hash_table_insert(field->u.list.item_data, g_strdup(item), data);
+	purple_request_field_list_add_icon(field, item, NULL, data);
 }
 
 void
@@ -840,12 +833,30 @@
 	g_return_if_fail(field != NULL);
 	g_return_if_fail(item  != NULL);
 	g_return_if_fail(data  != NULL);
-	g_return_if_fail(icon_path != NULL);
 	g_return_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST);
 
+	if (icon_path)
+	{
+		if (field->u.list.icons == NULL)
+		{
+			GList *l;
+			for (l = field->u.list.items ; l != NULL ; l = l->next)
+			{
+				/* Order doesn't matter, because we're just
+				 * filing in blank items.  So, we use
+				 * g_list_prepend() because it's faster. */
+				field->u.list.icons = g_list_prepend(field->u.list.icons, NULL);
+			}
+		}
+		field->u.list.icons = g_list_append(field->u.list.icons, g_strdup(icon_path));
+	}
+	else if (field->u.list.icons)
+	{
+		/* Keep this even with the items list. */
+		field->u.list.icons = g_list_append(field->u.list.icons, NULL);
+	}
+
 	field->u.list.items = g_list_append(field->u.list.items, g_strdup(item));
-	field->u.list.icons = g_list_append(field->u.list.icons, g_strdup(icon_path));
-
 	g_hash_table_insert(field->u.list.item_data, g_strdup(item), data);
 }