# HG changeset patch # User Christian Hammond # Date 1054525963 0 # Node ID 48c63ee4996159eab6b5362bac9809f535bbeb1e # Parent a9cd11fd0d6fab59c4eb3dc33332430fcd11b162 [gaim-migrate @ 6060] The protocol drop-down menu now has protocol icons. committer: Tailor Script diff -r a9cd11fd0d6f -r 48c63ee49961 src/gtkutils.c --- a/src/gtkutils.c Sun Jun 01 23:31:46 2003 +0000 +++ b/src/gtkutils.c Mon Jun 02 03:52:43 2003 +0000 @@ -532,9 +532,14 @@ GtkWidget *optmenu; GtkWidget *menu; GtkWidget *item; + GtkWidget *image; + GdkPixbuf *pixbuf; + GdkPixbuf *scale; GList *p; - int i; - int selected_index = -1; + char *filename; + const char *proto_name; + char buf[256]; + int i, selected_index = -1; optmenu = gtk_option_menu_new(); gtk_widget_show(optmenu); @@ -549,7 +554,28 @@ plugin = (GaimPlugin *)p->data; prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin); - item = gtk_menu_item_new_with_label(plugin->info->name); + /* Create the item. */ + item = gtk_image_menu_item_new_with_label(plugin->info->name); + + /* Load the image. */ + proto_name = prpl_info->list_icon(NULL, NULL); + g_snprintf(buf, sizeof(buf), "%s.png", proto_name); + + filename = g_build_filename(DATADIR, "pixmaps", "gaim", "status", + "default", buf, NULL); + pixbuf = gdk_pixbuf_new_from_file(filename, NULL); + g_free(filename); + + if (pixbuf != NULL) { + /* Scale and insert the image */ + scale = gdk_pixbuf_scale_simple(pixbuf, 16, 16, + GDK_INTERP_BILINEAR); + image = gtk_image_new_from_pixbuf(scale); + g_object_unref(G_OBJECT(pixbuf)); + g_object_unref(G_OBJECT(scale)); + gtk_widget_show(image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image); + } g_object_set_data(G_OBJECT(item), "user_data", user_data); diff -r a9cd11fd0d6f -r 48c63ee49961 src/plugin.c --- a/src/plugin.c Sun Jun 01 23:31:46 2003 +0000 +++ b/src/plugin.c Mon Jun 02 03:52:43 2003 +0000 @@ -339,8 +339,11 @@ for (l = prpl_info->protocol_options; l != NULL; l = l->next) gaim_account_option_destroy(l->data); - g_list_free(prpl_info->user_splits); - g_list_free(prpl_info->protocol_options); + if (prpl_info->user_splits != NULL) + g_list_free(prpl_info->user_splits); + + if (prpl_info->protocol_options != NULL) + g_list_free(prpl_info->protocol_options); } else if (plugin->info->type == GAIM_PLUGIN_LOADER) { GaimPluginLoaderInfo *loader_info; diff -r a9cd11fd0d6f -r 48c63ee49961 src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Sun Jun 01 23:31:46 2003 +0000 +++ b/src/protocols/oscar/oscar.c Mon Jun 02 03:52:43 2003 +0000 @@ -5258,13 +5258,13 @@ static const char *oscar_list_icon(GaimAccount *a, struct buddy *b) { if (!b || (b && b->name && b->name[0] == '+')) { - if (isdigit(a->username[0])) + if (a != NULL && isdigit(*gaim_account_get_username(a))) return "icq"; else return "aim"; } - - if (isdigit(b->name[0])) + + if (b != NULL && isdigit(b->name[0])) return "icq"; return "aim"; }