comparison pidgin/gtkaccount.c @ 17486:ec8a4b674d50

Don't display the buddy icon for accounts that don't support buddy icons. Fixes #1414. This also includes a fix for crashing caused by the gtalk hackery (the crashing is fixed, but the hackery still doesn't work).
author Daniel Atallah <daniel.atallah@gmail.com>
date Wed, 30 May 2007 22:47:51 +0000
parents f9e93d404efc
children e91e2b450e5d 61789dec7c47 fbebe15c91a7
comparison
equal deleted inserted replaced
17485:97b5bf0637ca 17486:ec8a4b674d50
496 496
497 /* Google Talk default domain hackery! */ 497 /* Google Talk default domain hackery! */
498 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu)); 498 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu));
499 item = gtk_menu_get_active(GTK_MENU(menu)); 499 item = gtk_menu_get_active(GTK_MENU(menu));
500 protocol = g_object_get_data(G_OBJECT(item), "protocol"); 500 protocol = g_object_get_data(G_OBJECT(item), "protocol");
501 if (value == NULL && !strcmp(protocol, "prpl-fake") && 501 if (value == NULL && protocol != NULL && !strcmp(protocol, "prpl-fake") &&
502 !strcmp(purple_account_user_split_get_text(split), _("Domain"))) 502 !strcmp(purple_account_user_split_get_text(split), _("Domain")))
503 value = "gmail.com"; 503 value = "gmail.com";
504 504
505 if (value != NULL) 505 if (value != NULL)
506 gtk_entry_set_text(GTK_ENTRY(entry), value); 506 gtk_entry_set_text(GTK_ENTRY(entry), value);
507 } 507 }
825 825
826 /* Google Talk default domain hackery! */ 826 /* Google Talk default domain hackery! */
827 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu)); 827 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(dialog->protocol_menu));
828 item = gtk_menu_get_active(GTK_MENU(menu)); 828 item = gtk_menu_get_active(GTK_MENU(menu));
829 protocol = g_object_get_data(G_OBJECT(item), "protocol"); 829 protocol = g_object_get_data(G_OBJECT(item), "protocol");
830 if (str_value == NULL && !strcmp(protocol, "prpl-fake") && 830 if (str_value == NULL && protocol != NULL && !strcmp(protocol, "prpl-fake") &&
831 !strcmp(_("Connect server"), purple_account_option_get_text(option))) 831 !strcmp(_("Connect server"), purple_account_option_get_text(option)))
832 str_value = "talk.google.com"; 832 str_value = "talk.google.com";
833 833
834 if (str_value != NULL) 834 if (str_value != NULL)
835 gtk_entry_set_text(GTK_ENTRY(entry), str_value); 835 gtk_entry_set_text(GTK_ENTRY(entry), str_value);
836 836
837 title = g_strdup_printf("%s:", 837 title = g_strdup_printf("%s:",
2023 static void 2023 static void
2024 set_account(GtkListStore *store, GtkTreeIter *iter, PurpleAccount *account, GdkPixbuf *global_buddyicon) 2024 set_account(GtkListStore *store, GtkTreeIter *iter, PurpleAccount *account, GdkPixbuf *global_buddyicon)
2025 { 2025 {
2026 GdkPixbuf *pixbuf, *buddyicon = NULL; 2026 GdkPixbuf *pixbuf, *buddyicon = NULL;
2027 PurpleStoredImage *img = NULL; 2027 PurpleStoredImage *img = NULL;
2028 PurplePlugin *prpl;
2029 PurplePluginProtocolInfo *prpl_info = NULL;
2028 2030
2029 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM); 2031 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_MEDIUM);
2030 if ((pixbuf != NULL) && purple_account_is_disconnected(account)) 2032 if ((pixbuf != NULL) && purple_account_is_disconnected(account))
2031 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE); 2033 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
2032 2034
2033 if (purple_account_get_bool(account, "use-global-buddyicon", TRUE)) { 2035 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
2034 if (global_buddyicon != NULL) 2036 if (prpl != NULL)
2035 buddyicon = g_object_ref(G_OBJECT(global_buddyicon)); 2037 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
2036 /* This is for when set_account() is called for a single account */ 2038 if (prpl_info != NULL && prpl_info->icon_spec.format != NULL) {
2037 else 2039 if (purple_account_get_bool(account, "use-global-buddyicon", TRUE)) {
2040 if (global_buddyicon != NULL)
2041 buddyicon = g_object_ref(G_OBJECT(global_buddyicon));
2042 /* This is for when set_account() is called for a single account */
2043 else
2044 img = purple_buddy_icons_find_account_icon(account);
2045 } else {
2038 img = purple_buddy_icons_find_account_icon(account); 2046 img = purple_buddy_icons_find_account_icon(account);
2039 } else { 2047 }
2040 img = purple_buddy_icons_find_account_icon(account);
2041 } 2048 }
2042 2049
2043 if (img != NULL) { 2050 if (img != NULL) {
2044 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); 2051 GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
2045 GdkPixbuf *buddyicon_pixbuf; 2052 GdkPixbuf *buddyicon_pixbuf;