changeset 16695:4a020cf5942d

merge of '45bdc7f0cf3d3c9229f3fcd9de71b882131c05c0' and '8ce6e4b908249fabc820ae1eb512cc4ee075282a'
author Richard Laager <rlaager@wiktel.com>
date Mon, 30 Apr 2007 00:45:01 +0000
parents 34618fedf5b9 (current diff) 7fad94837f9e (diff)
children 8f4d82a1aa6d
files
diffstat 4 files changed, 37 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/doc/Makefile.am	Wed Apr 25 02:25:53 2007 +0000
+++ b/doc/Makefile.am	Mon Apr 30 00:45:01 2007 +0000
@@ -21,6 +21,7 @@
 	gtklog-signals.dox \
 	gtkimhtml-signals.dox \
 	gtkrc-2.0 \
+	imgstore-signals.dox \
 	log-signals.dox \
 	notify-signals.dox \
 	pidgin.1.in \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/imgstore-signals.dox	Mon Apr 30 00:45:01 2007 +0000
@@ -0,0 +1,24 @@
+/** @page imgstore-signals Image Store Signals
+
+ @signals
+  @signal image-deleting
+ @endsignals
+
+ <hr>
+
+ @signaldef image-deleting
+  @signalproto
+char *(*image_deleting)(const PurpleStoredImage *img);
+  @endsignalproto
+  @signaldesc
+   Emitted when a PurpleStoredImage is about to be destroyed.  This allows
+   for what amounts to weak references.  Code can hold onto a pointer to
+   the PurpleStoredImage without actually "holding" a reference.  They can
+   then use a signal handler to let them know when their img is about to
+   be destroyed.
+  @param img The image about to be destroyed.
+  @note It's not possible to purple_imgstore_ref() img to save it.
+ @endsignaldef
+
+*/
+// vim: syntax=c tw=75 et
--- a/libpurple/buddyicon.c	Wed Apr 25 02:25:53 2007 +0000
+++ b/libpurple/buddyicon.c	Mon Apr 30 00:45:01 2007 +0000
@@ -208,7 +208,7 @@
 }
 
 static void
-image_deleting_cb(PurpleStoredImage *img, gpointer data)
+image_deleting_cb(const PurpleStoredImage *img, gpointer data)
 {
 	const char *filename = purple_imgstore_get_filename(img);
 
--- a/pidgin/gtkstatusbox.c	Wed Apr 25 02:25:53 2007 +0000
+++ b/pidgin/gtkstatusbox.c	Mon Apr 30 00:45:01 2007 +0000
@@ -1449,9 +1449,18 @@
 						data = pidgin_convert_buddy_icon(plug, filename, &len);
 					img = purple_buddy_icons_set_account_icon(account, data, len);
 					purple_account_set_buddy_icon_path(account, filename);
+				}
+			}
+		}
 
-					purple_account_set_bool(account, "use-global-buddyicon", (filename != NULL));
-				}
+		/* Even if no accounts were processed, load the icon that was set. */
+		if (filename != NULL)
+		{
+			gchar *contents;
+			gsize size;
+			if (g_file_get_contents(filename, &contents, &size, NULL))
+			{
+				img = purple_imgstore_add(contents, size, filename);
 			}
 		}
 	}