Mercurial > pidgin.yaz
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; |