changeset 16574:45773df910e0

merge of 'a8caeb1c79d1daf68ca89b1cc36cef4578306ea1' and 'e33fd060bfb78ebc76bd2ce4b79eeb82dc3ad48f'
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 28 Apr 2007 04:10:18 +0000
parents 40b90b191ff3 (diff) ac0d07c7fd90 (current diff)
children 7b692d5dd704 db7e68346e44
files
diffstat 3 files changed, 26 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/buddyicon.c	Sat Apr 28 04:08:46 2007 +0000
+++ b/libpurple/buddyicon.c	Sat Apr 28 04:10:18 2007 +0000
@@ -948,13 +948,19 @@
 			}
 			else
 			{
-				int checksum = purple_blist_node_get_int(node, "icon_checksum");
-				if (checksum != 0)
+				PurpleAccount account = purple_buddy_get_account((PurpleBuddy *)node);
+				const char *prpl_id = purple_account_get_protocol_id(account);
+
+				if (!strcmp(prpl_id, "prpl-yahoo"))
 				{
-					char *checksum_str = g_strdup_printf("%i", checksum);
-					purple_blist_node_remove_setting(node, "icon_checksum");
-					purple_blist_node_set_string(node, "icon_checksum", checksum_str);
-					g_free(checksum_str);
+					int checksum = purple_blist_node_get_int(node, "icon_checksum");
+					if (checksum != 0)
+					{
+						char *checksum_str = g_strdup_printf("%i", checksum);
+						purple_blist_node_remove_setting(node, "icon_checksum");
+						purple_blist_node_set_string(node, "icon_checksum", checksum_str);
+						g_free(checksum_str);
+					}
 				}
 			}
 		}
--- a/pidgin/gtkdocklet-x11.c	Sat Apr 28 04:08:46 2007 +0000
+++ b/pidgin/gtkdocklet-x11.c	Sat Apr 28 04:10:18 2007 +0000
@@ -77,7 +77,7 @@
 	g_object_unref(G_OBJECT(docklet));
 	docklet = NULL;
 
-	g_idle_add(docklet_x11_create_cb, NULL);
+	g_idle_add(docklet_x11_recreate_cb, NULL);
 }
 
 static void
--- a/pidgin/gtkstatusbox.c	Sat Apr 28 04:08:46 2007 +0000
+++ b/pidgin/gtkstatusbox.c	Sat Apr 28 04:10:18 2007 +0000
@@ -2014,6 +2014,17 @@
 }
 
 static void
+pixbuf_size_prepared_cb(GdkPixbufLoader *loader, int width, int height, gpointer data)
+{
+#if GTK_CHECK_VERSION(2,2,0)
+	int w, h;
+	GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MEDIUM);
+	gtk_icon_size_lookup(icon_size, &w, &h);
+	gdk_pixbuf_loader_set_size(loader, w, h);
+#endif
+}
+
+static void
 pidgin_status_box_redisplay_buddy_icon(PidginStatusBox *status_box)
 {
 
@@ -2031,6 +2042,7 @@
 	if (status_box->buddy_icon_img != NULL)
 	{
 		GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
+		g_signal_connect(G_OBJECT(loader), "size-prepared", G_CALLBACK(pixbuf_size_prepared_cb), NULL);
 		gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(status_box->buddy_icon_img),
 		                        purple_imgstore_get_size(status_box->buddy_icon_img), NULL);
 		gdk_pixbuf_loader_close(loader, NULL);
@@ -2047,7 +2059,7 @@
 	}
 
 	if (status_box->buddy_icon != NULL) {
-	        status_box->icon_opaque = pidgin_gdk_pixbuf_is_opaque(status_box->buddy_icon);
+		status_box->icon_opaque = pidgin_gdk_pixbuf_is_opaque(status_box->buddy_icon);
 		gtk_image_set_from_pixbuf(GTK_IMAGE(status_box->icon), status_box->buddy_icon);
 		status_box->buddy_icon_hover = gdk_pixbuf_copy(status_box->buddy_icon);
 		do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 32);