changeset 16847:9862a82206ba

merge of 'df3320af10ba54cf6129f203dedb82f35baf6800' and 'e4f4d5a254ea26abee249a1ef3fdb5c72f3c59b2'
author Richard Laager <rlaager@wiktel.com>
date Thu, 03 May 2007 23:23:44 +0000
parents 834e75427b1c (current diff) 30ab55257a16 (diff)
children 94d68859f74d
files libpurple/buddyicon.c pidgin/gtkblist.c pidgin/pixmaps/about_menu.png
diffstat 28 files changed, 481 insertions(+), 146 deletions(-) [+]
line wrap: on
line diff
--- a/AUTHORS	Thu May 03 22:10:19 2007 +0000
+++ b/AUTHORS	Thu May 03 23:23:44 2007 +0000
@@ -17,14 +17,15 @@
 	Jabber:  seanegn@jabber.org
 	Gadu-Gadu:  1511497
 
-Daniel 'datallah' Atallah
+Daniel 'datallah' Atallah - Developer
 Ethan 'Paco-Paco' Blanton - Developer
 Thomas Butter - Developer
 Sadrul Habib Chowdhury - Developer
 Mark 'KingAnt' Doliner - Developer
 Christian 'ChipX86' Hammond - Developer & Webmaster
 Gary 'grim' Kramlich - Developer
-Richard 'rlaager' Laager
+Richard 'rlaager' Laager - Developer
+Richard 'wabz' Nelson - Developer
 Christopher 'siege' O'Brien - Developer
 Bartosz Oler - Developer
 Etan 'deryni' Reisner - Developer
@@ -37,9 +38,11 @@
 
 Crazy Patch Writers:
 -------------------
+John 'rekkanoryo' Bailey
 Ka-Hing 'javabsp' Cheung
 Felipe 'shx' Contreras
 Decklin Foster
+Casey Harkins
 Peter 'Bleeter' Lawler
 Robert 'Robot101' McQueen
 Benjamin Miller
--- a/COPYRIGHT	Thu May 03 22:10:19 2007 +0000
+++ b/COPYRIGHT	Thu May 03 23:23:44 2007 +0000
@@ -73,6 +73,7 @@
 Eoin Coffey
 Jason Cohen
 Todd Cohen
+Graham Cole
 Jono Cole
 Lorenzo Colitti
 Jeff Connelly
--- a/doc/pidgin.1.in	Thu May 03 22:10:19 2007 +0000
+++ b/doc/pidgin.1.in	Thu May 03 23:23:44 2007 +0000
@@ -548,6 +548,8 @@
 .br
  Richard 'rlaager' Laager (developer) <\fIrlaager@pidgin.im\fR>
 .br
+ Richard 'wabz' Nelson (developer)
+.br
  Christopher 'siege' O'Brien (developer)
 .br
  Bartosz Oler (developer)
@@ -574,12 +576,12 @@
 .br
 Ka-Hing 'javabsp' Cheung
 .br
-Sadrul Habib Chowdhury
-.br
 Felipe 'shx' Contreras
 .br
 Decklin Foster
 .br
+Casey Harkins
+.br
 Peter 'Bleeter' Lawler
 .br
 Robert 'Robot101' McQueen
--- a/libpurple/buddyicon.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/buddyicon.c	Thu May 03 23:23:44 2007 +0000
@@ -376,13 +376,16 @@
 	account  = purple_buddy_icon_get_account(icon);
 	username = purple_buddy_icon_get_username(icon);
 
-	/* If no data exists, then call the functions below with NULL to
-	 * unset the icon.  They will then unref the icon and it should be
-	 * destroyed.  The only way it wouldn't be destroyed is if someone
+	/* If no data exists (icon->img == NULL), then call the functions below
+	 * with NULL to unset the icon.  They will then unref the icon and it should
+	 * be destroyed.  The only way it wouldn't be destroyed is if someone
 	 * else is holding a reference to it, in which case they can kill
 	 * the icon when they realize it has no data. */
 	icon_to_set = icon->img ? icon : NULL;
 
+	/* Ensure that icon remains valid throughout */
+	if (icon) purple_buddy_icon_ref(icon);
+
 	buddies = purple_find_buddies(account, username);
 	while (buddies != NULL)
 	{
@@ -390,8 +393,6 @@
 		char *old_icon;
 
 		purple_buddy_set_icon(buddy, icon_to_set);
-
-
 		old_icon = g_strdup(purple_blist_node_get_string((PurpleBlistNode *)buddy,
 		                                                 "buddy_icon"));
 		if (icon->img && purple_buddy_icons_is_caching())
@@ -429,6 +430,9 @@
 
 	if (conv != NULL)
 		purple_conv_im_set_icon(PURPLE_CONV_IM(conv), icon_to_set);
+	
+	/* icon's refcount was incremented above */
+	if (icon) purple_buddy_icon_unref(icon);
 }
 
 void
@@ -450,6 +454,7 @@
 			g_free(data);
 	}
 
+	g_free(icon->checksum);
 	icon->checksum = g_strdup(checksum);
 
 	purple_buddy_icon_update(icon);
@@ -524,7 +529,7 @@
 
 	if (icon != NULL)
 		purple_buddy_icon_set_data(icon, icon_data, icon_len, checksum);
-	else
+	else if (icon_data && icon_len > 0)
 	{
 		if (icon_data != NULL && icon_len > 0)
 		{
@@ -647,11 +652,10 @@
 			{
 				const char *checksum;
 
-				if (icon == NULL)
-					icon = purple_buddy_icon_create(account, username);
+				icon = purple_buddy_icon_create(account, username);
 				icon->ref_count = 0;
 				icon->img = NULL;
-				checksum = g_strdup(purple_blist_node_get_string((PurpleBlistNode*)b, "icon_checksum"));
+				checksum = purple_blist_node_get_string((PurpleBlistNode*)b, "icon_checksum");
 				purple_buddy_icon_set_data(icon, data, len, checksum);
 			}
 			g_free(path);
--- a/libpurple/plugins/tcl/tcl_ref.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/plugins/tcl/tcl_ref.c	Thu May 03 23:23:44 2007 +0000
@@ -114,7 +114,7 @@
 	char *ptr;
 	PurpleStringref *type;
 	void *value;
-	static const char const *prefix = "purple-";
+	static const char prefix[] = "purple-";
 	static const int prefixlen = sizeof(prefix) - 1;
 
 	if (strlen(bytes) < prefixlen
--- a/libpurple/protocols/irc/msgs.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/protocols/irc/msgs.c	Thu May 03 23:23:44 2007 +0000
@@ -109,7 +109,9 @@
 	if (!strcmp(name, "251")) {
 		/* 251 is required, so we pluck our nick from here */
 		purple_connection_set_display_name(gc, args[0]);
-	} else if (!strcmp(name, "255")) {
+		/* Some IRC servers seem to not send a 255 numeric, so
+		 * I guess we can't require it; 251 will do. */
+	/* } else if (!strcmp(name, "255")) { */
 		purple_connection_set_state(gc, PURPLE_CONNECTED);
 
 		/* If we're away then set our away message */
--- a/libpurple/protocols/msn/notification.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/protocols/msn/notification.c	Thu May 03 23:23:44 2007 +0000
@@ -947,7 +947,7 @@
 	url = cmd->params[2];
 
 	buf = g_strdup_printf("%s%lu%s",
-			   session->passport_info.mspauth,
+			   session->passport_info.mspauth ? session->passport_info.mspauth : "BOGUS",
 			   time(NULL) - session->passport_info.sl,
 			   purple_connection_get_password(account->gc));
 
@@ -1142,33 +1142,25 @@
 
 	if ((value = msn_message_get_attr(msg, "kv")) != NULL)
 	{
-		if (session->passport_info.kv != NULL)
-			g_free(session->passport_info.kv);
-
+		g_free(session->passport_info.kv);
 		session->passport_info.kv = g_strdup(value);
 	}
 
 	if ((value = msn_message_get_attr(msg, "sid")) != NULL)
 	{
-		if (session->passport_info.sid != NULL)
-			g_free(session->passport_info.sid);
-
+		g_free(session->passport_info.sid);
 		session->passport_info.sid = g_strdup(value);
 	}
 
 	if ((value = msn_message_get_attr(msg, "MSPAuth")) != NULL)
 	{
-		if (session->passport_info.mspauth != NULL)
-			g_free(session->passport_info.mspauth);
-
+		g_free(session->passport_info.mspauth);
 		session->passport_info.mspauth = g_strdup(value);
 	}
 
 	if ((value = msn_message_get_attr(msg, "ClientIP")) != NULL)
 	{
-		if (session->passport_info.client_ip != NULL)
-			g_free(session->passport_info.client_ip);
-
+		g_free(session->passport_info.client_ip);
 		session->passport_info.client_ip = g_strdup(value);
 	}
 
@@ -1279,11 +1271,8 @@
 					  msn_user_get_passport(session->user),
 					  session->passport_info.file, NULL, NULL);
 
-	if (from != NULL)
-		g_free(from);
-
-	if (subject != NULL)
-		g_free(subject);
+	g_free(from);
+	g_free(subject);
 
 	g_hash_table_destroy(table);
 }
--- a/libpurple/protocols/msn/user.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/protocols/msn/user.c	Thu May 03 23:23:44 2007 +0000
@@ -207,7 +207,7 @@
 		memset(digest, 0, sizeof(digest));
 
 		purple_cipher_context_reset(ctx, NULL);
-		purple_cipher_context_append(ctx, data, strlen((char *)data));
+		purple_cipher_context_append(ctx, (const guchar *)buf, strlen(buf));
 		purple_cipher_context_digest(ctx, sizeof(digest), digest, NULL);
 		purple_cipher_context_destroy(ctx);
 		g_free(buf);
--- a/libpurple/protocols/oscar/oscar.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu May 03 23:23:44 2007 +0000
@@ -280,7 +280,8 @@
 
 	/* Make sure encoding begins with charset= */
 	if (strncmp(encoding, "text/aolrtf; charset=", 21) &&
-		strncmp(encoding, "text/x-aolrtf; charset=", 23))
+		strncmp(encoding, "text/x-aolrtf; charset=", 23) &&
+		strncmp(encoding, "text/plain; charset=", 20))
 	{
 		return NULL;
 	}
@@ -5570,7 +5571,7 @@
 			length = va_arg(ap, int);
 			md5 = va_arg(ap, guchar *);
 
-			if (flags == 0x41) {
+			if ((flags == 0x00) || (flags == 0x41)) {
 				if (!flap_connection_getbytype(od, SNAC_FAMILY_BART) && !od->iconconnecting) {
 					od->iconconnecting = TRUE;
 					od->set_icon = TRUE;
--- a/libpurple/status.c	Thu May 03 22:10:19 2007 +0000
+++ b/libpurple/status.c	Thu May 03 23:23:44 2007 +0000
@@ -1311,7 +1311,6 @@
 
 	if (purple_presence_get_context(presence) == PURPLE_PRESENCE_CONTEXT_BUDDY)
 	{
-		const GList *l;
 		time_t current_time = time(NULL);
 
 		update_buddy_idle(purple_presence_get_buddy(presence), presence, current_time,
--- a/pidgin/gtkblist.c	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/gtkblist.c	Thu May 03 23:23:44 2007 +0000
@@ -1086,7 +1086,7 @@
 			prpl_info->can_receive_file(buddy->account->gc, buddy->name))
 		{
 			pidgin_new_item_from_stock(menu, _("_Send File"),
-									 PIDGIN_STOCK_FILE_TRANSFER,
+									 PIDGIN_STOCK_TOOLBAR_SEND_FILE,
 									 G_CALLBACK(gtk_blist_menu_send_file_cb),
 									 buddy, 0, 0, NULL);
 		}
@@ -2851,7 +2851,7 @@
 	{ N_("/_Help"), NULL, NULL, 0, "<Branch>", NULL },
 	{ N_("/Help/Online _Help"), "F1", gtk_blist_show_onlinehelp_cb, 0, "<StockItem>", GTK_STOCK_HELP },
 	{ N_("/Help/_Debug Window"), NULL, toggle_debug, 0, "<Item>", NULL },
-	{ N_("/Help/_About"), NULL, pidgin_dialogs_about, 0,  "<StockItem>", PIDGIN_STOCK_ABOUT },
+	{ N_("/Help/_About"), NULL, pidgin_dialogs_about, 0,  "<Item>", NULL },
 };
 
 /*********************************************************
--- a/pidgin/gtkconv.c	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/gtkconv.c	Thu May 03 23:23:44 2007 +0000
@@ -1579,7 +1579,7 @@
 		if (prpl_info && prpl_info->send_file)
 		{
 			button = pidgin_new_item_from_stock(menu, _("Send File"),
-				PIDGIN_STOCK_FILE_TRANSFER, G_CALLBACK(menu_chat_send_file_cb),
+				PIDGIN_STOCK_TOOLBAR_SEND_FILE, G_CALLBACK(menu_chat_send_file_cb),
 				PIDGIN_CONVERSATION(conv), 0, 0, NULL);
 
 			if (gc == NULL || prpl_info == NULL ||
@@ -2767,7 +2767,7 @@
 
 	{ "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL },
 
-	{ N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_FILE_TRANSFER },
+	{ N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
 	{ N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
 			0, "<Item>", NULL },
 	{ N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0,
--- a/pidgin/gtkrequest.c	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/gtkrequest.c	Thu May 03 23:23:44 2007 +0000
@@ -1556,7 +1556,7 @@
 	}
 
 #ifdef _WIN32
-	if (!folder_set) {
+	if (!folder_set && (filename == NULL || *filename == '\0' || !g_file_test(filename, G_FILE_TEST_EXISTS))) {
 		char *my_documents = wpurple_get_special_folder(CSIDL_PERSONAL);
 
 		if (my_documents != NULL) {
--- a/pidgin/pidginstock.c	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pidginstock.c	Thu May 03 23:23:44 2007 +0000
@@ -36,7 +36,6 @@
 
 } const stock_icons[] =
 {
-	{ PIDGIN_STOCK_ABOUT,           "buttons", "about_menu.png"           },
 	{ PIDGIN_STOCK_ACTION,          NULL,      GTK_STOCK_EXECUTE          },
 #if GTK_CHECK_VERSION(2,6,0)
 	{ PIDGIN_STOCK_ALIAS,           NULL,      GTK_STOCK_EDIT             },
@@ -61,7 +60,6 @@
 #endif
 	{ PIDGIN_STOCK_FILE_CANCELED,   NULL,      GTK_STOCK_CANCEL           },
 	{ PIDGIN_STOCK_FILE_DONE,       NULL,      GTK_STOCK_APPLY            },
-	{ PIDGIN_STOCK_FILE_TRANSFER,   NULL,      GTK_STOCK_REVERT_TO_SAVED  },
 	{ PIDGIN_STOCK_IGNORE,          NULL,      GTK_STOCK_DIALOG_ERROR     },
 	{ PIDGIN_STOCK_INVITE,          NULL,      GTK_STOCK_JUMP_TO          },
 	{ PIDGIN_STOCK_MODIFY,          NULL,      GTK_STOCK_PREFERENCES      },
@@ -160,6 +158,7 @@
 	{ PIDGIN_STOCK_TOOLBAR_TYPING, "toolbar", "typing.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TOOLBAR_UNBLOCK, "toolbar", "unblock.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, "toolbar", "select-avatar.png", FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL  },
+	{ PIDGIN_STOCK_TOOLBAR_SEND_FILE, "toolbar", "send-file.png", TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, NULL  },
 
 	{ PIDGIN_STOCK_TRAY_AVAILABLE, "tray", "tray-online.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL  },
 	{ PIDGIN_STOCK_TRAY_INVISIBLE, "tray", "tray-invisible.png", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, NULL  },
--- a/pidgin/pidginstock.h	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pidginstock.h	Thu May 03 23:23:44 2007 +0000
@@ -31,7 +31,6 @@
 /** @name Stock images                                                    */
 /**************************************************************************/
 /*@{*/
-#define PIDGIN_STOCK_ABOUT           "pidgin-about"
 #define PIDGIN_STOCK_ACTION          "pidgin-action"
 #define PIDGIN_STOCK_ALIAS           "pidgin-alias"
 #define PIDGIN_STOCK_AWAY            "pidgin-away"
@@ -45,7 +44,6 @@
 #define PIDGIN_STOCK_FGCOLOR         "pidgin-fgcolor"
 #define PIDGIN_STOCK_FILE_CANCELED   "pidgin-file-canceled"
 #define PIDGIN_STOCK_FILE_DONE       "pidgin-file-done"
-#define PIDGIN_STOCK_FILE_TRANSFER   "pidgin-file-transfer"
 #define PIDGIN_STOCK_IGNORE          "pidgin-ignore"
 #define PIDGIN_STOCK_INVITE          "pidgin-invite"
 #define PIDGIN_STOCK_MODIFY          "pidgin-modify"
@@ -125,6 +123,7 @@
 #define PIDGIN_STOCK_TOOLBAR_USER_INFO    "pidgin-info"
 #define PIDGIN_STOCK_TOOLBAR_UNBLOCK      "pidgin-unblock"
 #define PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR "pidgin-select-avatar"
+#define PIDGIN_STOCK_TOOLBAR_SEND_FILE    "pidgin-send-file"
 
 /* Tray icons */
 #define PIDGIN_STOCK_TRAY_AVAILABLE       "pidgin-tray-available"
--- a/pidgin/pixmaps/Makefile.am	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/Makefile.am	Thu May 03 23:23:44 2007 +0000
@@ -1,7 +1,6 @@
 SUBDIRS = animations buddy_icons dialogs emblems emotes icons protocols status toolbar tray
 
 EXTRA_DIST = \
-		about_menu.png			\
 		edit.png			\
 		logo.png			\
 		pause.png			\
@@ -13,7 +12,7 @@
 		pidgin.ico
 
 pidginbuttonpixdir = $(datadir)/pixmaps/pidgin/buttons
-pidginbuttonpix_DATA = about_menu.png edit.png pause.png
+pidginbuttonpix_DATA = edit.png pause.png
 
 pidgindistpixdir = $(datadir)/pixmaps/pidgin
 pidgindistpix_DATA = logo.png arrow-down.xpm arrow-left.xpm arrow-right.xpm arrow-up.xpm
Binary file pidgin/pixmaps/about_menu.png has changed
--- a/pidgin/pixmaps/emotes/default/22/Makefile.am	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/emotes/default/22/Makefile.am	Thu May 03 23:23:44 2007 +0000
@@ -67,6 +67,7 @@
 		glasses-cool.png \
 		glasses-nerdy.png \
 		go-away.png \
+		goat.png \
 		good.png \
 		hammer.png \
 		handcuffs.png \
Binary file pidgin/pixmaps/emotes/default/22/goat.png has changed
--- a/pidgin/pixmaps/emotes/default/22/scalable/Makefile.am	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/emotes/default/22/scalable/Makefile.am	Thu May 03 23:23:44 2007 +0000
@@ -62,6 +62,7 @@
 		girl.svg \
 		glasses-cool.svg \
 		glasses-nerdy.svg \
+		goat.svg \
 		go-away.svg \
 		good.svg \
 		hammer.svg \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pidgin/pixmaps/emotes/default/22/scalable/goat.svg	Thu May 03 23:23:44 2007 +0000
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="24"
+   height="24"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.44.1"
+   version="1.0"
+   sodipodi:docbase="/home/hbons/Desktop"
+   sodipodi:docname="goat.svg"
+   inkscape:export-filename="/home/hbons/Desktop/goat.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3164">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="0"
+         id="stop3166" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0;"
+         offset="1"
+         id="stop3168" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3154">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3156" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3158" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3134">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3136" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3138" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3106">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3108" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:0;"
+         offset="1"
+         id="stop3110" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3106"
+       id="radialGradient3112"
+       cx="8.5065088"
+       cy="9.6461401"
+       fx="8.5065088"
+       fy="9.6461401"
+       r="2.1569445"
+       gradientTransform="matrix(1.541291,0.465608,-0.481819,2.027283,4.319423e-2,-14.11923)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3106"
+       id="radialGradient3116"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.541291,0.465608,-0.481819,2.027283,4.319423e-2,-14.11923)"
+       cx="8.5065088"
+       cy="9.6461401"
+       fx="8.5065088"
+       fy="9.6461401"
+       r="2.1569445" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3134"
+       id="linearGradient3140"
+       x1="5.437963"
+       y1="0.23528472"
+       x2="5.437963"
+       y2="5.4434042"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3134"
+       id="linearGradient3148"
+       gradientUnits="userSpaceOnUse"
+       x1="5.437963"
+       y1="0.23528472"
+       x2="5.437963"
+       y2="5.4434042"
+       gradientTransform="matrix(-1,0,0,1,25,3e-7)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3154"
+       id="linearGradient3160"
+       x1="12.5"
+       y1="0.37108496"
+       x2="12.5"
+       y2="16.491886"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3164"
+       id="radialGradient3170"
+       cx="4.5859361"
+       cy="13.798236"
+       fx="4.5859361"
+       fy="13.798236"
+       r="3.4977479"
+       gradientTransform="matrix(1,0,0,0.538889,0,6.36252)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="25.730843"
+     inkscape:cx="25.851983"
+     inkscape:cy="11.081674"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="24px"
+     height="24px"
+     showgrid="true"
+     inkscape:window-width="1440"
+     inkscape:window-height="849"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       sodipodi:type="arc"
+       style="opacity:0.80681818;fill:url(#radialGradient3170);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3162"
+       sodipodi:cx="4.5859361"
+       sodipodi:cy="13.798236"
+       sodipodi:rx="3.4977479"
+       sodipodi:ry="1.8848975"
+       d="M 8.083684 13.798236 A 3.4977479 1.8848975 0 1 1  1.0881882,13.798236 A 3.4977479 1.8848975 0 1 1  8.083684 13.798236 z"
+       transform="matrix(1.857695,0,0,1.856865,3.982983,-5.121458)" />
+    <path
+       style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 11.125 3.5 C 7.4630368 3.5 4.5 5.9198669 4.5 8.90625 L 4.5 10.6875 C 4.4999999 12.520757 5.6074368 14.15201 7.3125 15.125 L 7.3125 17.9375 C 7.3124999 19.907141 9.1821933 21.485422 11.5 21.5 L 11.5 22.5 C 11.5 23.053999 11.946001 23.499999 12.5 23.5 C 13.053999 23.5 13.5 23.053998 13.5 22.5 L 13.5 21.5 C 15.817807 21.485423 17.6875 19.907142 17.6875 17.9375 L 17.6875 15.125 C 19.392563 14.15201 20.5 12.520757 20.5 10.6875 L 20.5 8.90625 C 20.5 5.9198668 17.536962 3.5 13.875 3.5 L 11.125 3.5 z "
+       id="rect1872" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-1.0028498"
+       inkscape:original="M 11.125 3.5 C 7.4630368 3.5 4.5 5.9198669 4.5 8.90625 L 4.5 10.6875 C 4.4999999 12.520757 5.6074368 14.15201 7.3125 15.125 L 7.3125 17.9375 C 7.3124999 19.907141 9.1821933 21.485422 11.5 21.5 L 13.5 21.5 C 15.817807 21.485423 17.6875 19.907142 17.6875 17.9375 L 17.6875 15.125 C 19.392563 14.15201 20.5 12.520757 20.5 10.6875 L 20.5 8.90625 C 20.5 5.9198668 17.536962 3.5 13.875 3.5 L 11.125 3.5 z "
+       style="opacity:1;fill:url(#linearGradient3160);fill-opacity:1.0;stroke:white;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3152"
+       d="M 11.125,4.5 C 7.9048332,4.5 5.5,6.5832069 5.5,8.90625 L 5.5,10.6875 C 5.4999999,12.116888 6.3641576,13.423507 7.8125,14.25 C 8.1242411,14.430678 8.3151074,14.764694 8.3125,15.125 L 8.3125,17.9375 C 8.3124999,19.2725 9.6340264,20.488264 11.5,20.5 L 13.5,20.5 C 15.365974,20.488265 16.6875,19.272502 16.6875,17.9375 L 16.6875,15.125 C 16.684893,14.764694 16.875759,14.430678 17.1875,14.25 C 18.635842,13.423507 19.5,12.116888 19.5,10.6875 L 19.5,8.90625 C 19.5,6.583207 17.095166,4.5 13.875,4.5 L 11.125,4.5 z " />
+    <rect
+       style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2763"
+       width="1"
+       height="5.0000005"
+       x="12.000009"
+       y="15.000004"
+       ry="0.53886384"
+       rx="0.5" />
+    <rect
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2765"
+       width="3"
+       height="1.9656405"
+       x="11.000009"
+       y="14.000004"
+       ry="0.98282027" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#babdb6;stroke-width:0.82246691;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2771"
+       sodipodi:cx="12.203254"
+       sodipodi:cy="18.947697"
+       sodipodi:rx="2.6816068"
+       sodipodi:ry="2.0986488"
+       d="M 14.767561,19.561604 A 2.6816068,2.0986488 0 0 1 9.6776584,19.65308"
+       transform="matrix(1.118732,0,0,1.321408,-1.152164,-7.764463)"
+       sodipodi:start="0.29686645"
+       sodipodi:end="2.7988059"
+       sodipodi:open="true" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2313"
+       sodipodi:cx="9.0598059"
+       sodipodi:cy="8.7845774"
+       sodipodi:rx="1.1679889"
+       sodipodi:ry="1.4520943"
+       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
+       transform="matrix(0,1.284259,-0.688661,0,2.35522,-2.135131)" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-0.94218826"
+       inkscape:original="M 4.5625 4.46875 C 2.9579994 7.0296312 3.4314452 8.7503668 4.25 9.5 C 6.0336558 9.5000001 8.9413878 9.500546 11.28125 9.5 C 12.256192 9.4997721 13.455805 9.5 13.9375 9.5 C 16.216702 9.5005481 18.983108 9.5 20.75 9.5 C 21.568557 8.7503669 22.042002 7.0296311 20.4375 4.46875 C 20.428669 5.0928925 20.216276 5.598111 19.875 6 C 18.748078 7.2885168 16.178685 7.564945 14.03125 7.59375 C 14.031262 7.5849058 11.437522 7.5849056 11.4375 7.59375 C 8.4698521 7.5610102 4.6031518 7.1497258 4.5625 4.46875 z "
+       xlink:href="#path2244"
+       style="opacity:0.2;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:1.00000012;stroke-miterlimit:4;stroke-opacity:1"
+       id="path2266"
+       d="M 4.6875,6.8125 C 4.5155414,7.6585464 4.5469059,8.2639318 4.78125,8.5625 C 6.5783776,8.5625677 9.1184812,8.5630047 11.28125,8.5625 C 12.256519,8.562272 13.456102,8.5625 13.9375,8.5625 C 16.038658,8.5630053 18.454079,8.5625696 20.21875,8.5625 C 20.450872,8.2667634 20.475711,7.6759035 20.3125,6.84375 C 19.557648,7.5553907 18.566446,7.9573838 17.53125,8.1875 C 16.376366,8.4442219 15.140345,8.516373 14.03125,8.53125 C 14.010422,8.5319411 13.989578,8.5319411 13.96875,8.53125 C 13.963551,8.5311176 13.949379,8.5314449 13.9375,8.53125 C 13.932632,8.5307271 13.918896,8.5332789 13.90625,8.53125 C 13.891461,8.5310771 13.861711,8.5314138 13.84375,8.53125 C 13.780888,8.5306766 13.718637,8.5316757 13.625,8.53125 C 13.384218,8.5301553 13.073147,8.53125 12.75,8.53125 C 12.426853,8.53125 12.084536,8.5301553 11.84375,8.53125 C 11.736734,8.5317365 11.659399,8.5305759 11.59375,8.53125 C 11.568819,8.5354507 11.540979,8.5302056 11.53125,8.53125 C 11.498821,8.5347315 11.506084,8.5309288 11.5,8.53125 C 11.479172,8.5319411 11.458328,8.5319411 11.4375,8.53125 C 9.9146719,8.5144498 8.1174583,8.4078713 6.59375,7.90625 C 5.8773837,7.6704144 5.2333296,7.3204154 4.6875,6.8125 z "
+       transform="translate(-20.1876,-3.210909)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2311"
+       sodipodi:cx="9.0598059"
+       sodipodi:cy="8.7845774"
+       sodipodi:rx="1.1679889"
+       sodipodi:ry="1.4520943"
+       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
+       transform="matrix(0,1.284261,-2.065983,0,8.454425,-7.135153)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2315"
+       sodipodi:cx="9.0598059"
+       sodipodi:cy="8.7845774"
+       sodipodi:rx="1.1679889"
+       sodipodi:ry="1.4520943"
+       d="M 10.227795 8.7845774 A 1.1679889 1.4520943 0 1 1  7.891817,8.7845774 A 1.1679889 1.4520943 0 1 1  10.227795 8.7845774 z"
+       transform="matrix(0,1.284259,-0.688661,0,-9.64477,-2.135131)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#radialGradient3116);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3114"
+       sodipodi:cx="7.9476604"
+       sodipodi:cy="10.436511"
+       sodipodi:rx="2.1569445"
+       sodipodi:ry="2.8370621"
+       d="M 10.104605 10.436511 A 2.1569445 2.8370621 0 1 1  5.7907159,10.436511 A 2.1569445 2.8370621 0 1 1  10.104605 10.436511 z"
+       transform="matrix(-1.390856,0,0,1.23367,28.05405,-2.375209)" />
+    <path
+       style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 17.00001,13.000004 C 17.00001,11.344004 16.552009,10.000004 16.000009,10.000004 C 15.448009,10.000004 15.000009,11.344004 15.000009,13.000004 C 16.206103,13.000004 16.083985,13.000004 17.00001,13.000004 z "
+       id="path2193"
+       sodipodi:nodetypes="cscc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:url(#radialGradient3112);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3104"
+       sodipodi:cx="7.9476604"
+       sodipodi:cy="10.436511"
+       sodipodi:rx="2.1569445"
+       sodipodi:ry="2.8370621"
+       d="M 10.104605 10.436511 A 2.1569445 2.8370621 0 1 1  5.7907159,10.436511 A 2.1569445 2.8370621 0 1 1  10.104605 10.436511 z"
+       transform="matrix(1.390856,0,0,1.23367,-3.05405,-2.375212)" />
+    <path
+       style="fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 10.000009,13.000004 C 10.000009,11.344004 9.5520081,10.000004 9.0000081,10.000004 C 8.4480082,10.000004 8.0000081,11.344004 8.0000081,13.000004 C 9.0145101,13.000004 9.1767691,13.000004 10.000009,13.000004 z "
+       id="path2219"
+       sodipodi:nodetypes="cscc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#888a85;stroke-width:1.03446472;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3128"
+       sodipodi:cx="3.3617244"
+       sodipodi:cy="2.7997618"
+       sodipodi:rx="0.75784534"
+       sodipodi:ry="2.1180806"
+       d="M 4.1195697 2.7997618 A 0.75784534 2.1180806 0 1 1  2.603879,2.7997618 A 0.75784534 2.1180806 0 1 1  4.1195697 2.7997618 z"
+       transform="matrix(1.319531,0,0,0.708188,4.0641,2.017241)" />
+    <path
+       style="opacity:1;fill:#c17d11;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 7.6875,-0.49750418 C 5.8653114,-0.1200094 4.5,1.499533 4.5,3.4538317 C 4.5,5.6873161 6.2919987,7.4999996 8.5,7.4999997 C 8.5,7.4999997 8.5179429,6.4884577 8.5179429,6.4884577 C 8.5291419,6.5224424 6.9560837,5.5492045 6.5,2.4422897 C 6.329457,1.2805234 7.0215067,0.24186794 7.8125,-0.49750418 C 7.7725639,-0.49050652 7.7270219,-0.50569176 7.6875,-0.49750418 z "
+       id="path3132"
+       sodipodi:nodetypes="csccscc" />
+    <path
+       style="opacity:1;fill:url(#linearGradient3140);fill-opacity:1.0;stroke:#8f5902;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 7.6875,-0.49750418 C 5.8653114,-0.1200094 4.5,1.499533 4.5,3.4538317 C 4.5,5.6873161 5.2815382,7.4999996 7.4895395,7.4999997 C 7.4895395,7.4999997 8.5179429,6.4884577 8.5179429,6.4884577 C 8.5291419,6.5224424 6.9560837,5.5492045 6.5,2.4422897 C 6.329457,1.2805234 7.0215067,0.24186794 7.8125,-0.49750418 C 7.7725639,-0.49050652 7.7270219,-0.50569176 7.6875,-0.49750418 z "
+       id="path3121"
+       sodipodi:nodetypes="csccscc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#888a85;stroke-width:1.03446472;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3142"
+       sodipodi:cx="3.3617244"
+       sodipodi:cy="2.7997618"
+       sodipodi:rx="0.75784534"
+       sodipodi:ry="2.1180806"
+       d="M 4.1195697 2.7997618 A 0.75784534 2.1180806 0 1 1  2.603879,2.7997618 A 0.75784534 2.1180806 0 1 1  4.1195697 2.7997618 z"
+       transform="matrix(-1.319531,0,0,0.708188,20.9359,2.017241)" />
+    <path
+       style="opacity:1;fill:#c17d11;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 17.312499,-0.49750388 C 19.134688,-0.1200091 20.499999,1.4995333 20.499999,3.453832 C 20.499999,5.6873164 18.708001,7.4999999 16.499999,7.5 C 16.499999,7.5 16.482056,6.488458 16.482056,6.488458 C 16.470857,6.5224427 18.043916,5.5492048 18.499999,2.44229 C 18.670542,1.2805237 17.978493,0.24186824 17.187499,-0.49750388 C 17.227435,-0.49050622 17.272977,-0.50569146 17.312499,-0.49750388 z "
+       id="path3144"
+       sodipodi:nodetypes="csccscc" />
+    <path
+       style="opacity:1;fill:url(#linearGradient3148);fill-opacity:1;stroke:#8f5902;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 17.312499,-0.49750388 C 19.134688,-0.1200091 20.499999,1.4995333 20.499999,3.453832 C 20.499999,5.6873164 19.524142,7.4999999 17.31614,7.5 C 17.31614,7.5 16.482056,6.488458 16.482056,6.488458 C 16.470857,6.5224427 18.043916,5.5492048 18.499999,2.44229 C 18.670542,1.2805237 17.978493,0.24186824 17.187499,-0.49750388 C 17.227435,-0.49050622 17.272977,-0.50569146 17.312499,-0.49750388 z "
+       id="path3146"
+       sodipodi:nodetypes="csccscc" />
+  </g>
+</svg>
--- a/pidgin/pixmaps/emotes/default/22/theme	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/emotes/default/22/theme	Thu May 03 23:23:44 2007 +0000
@@ -21,7 +21,7 @@
 moneymouth.png      :-$
 foot-in-mouth.png   :-!
 shout.png           >:o     >:O
-! skywalker.png     C:-)
+! skywalker.png     C:-) c:-) C:) c:)
 ! monkey.png        :-(|)
 
 ### Following AIM 6.1
@@ -120,102 +120,103 @@
 party.png           <:o)
 eyeroll.png         8-)
 yawn.png            |-) 
+goat.png            (nah)
 
 ### Following QQ 2006
 [QQ]
-shock.png           /惊讶 /:O /jy /surprised
-curl-lip.png        /撇嘴 /:~ /pz /curl_lip
-desire.png          /色 /:* /se /desire
-dazed.png           /发呆 /:| /dazed
-party.png           /得意 /8-) /dy /revel
-crying.png          /:< /ll /cry
-bashful.png         /害羞 /:$ /hx /bashful
-shut-mouth.png      /闭嘴 /:X /bz /shut_mouth
-sleepy.png          /睡 /:Z /shui /sleep
-weep.png            /大哭 /:'( /dk /weep
-embarrassed.png     /尴尬 /:-| /gg /embarassed
-pissed-off.png      /发怒 /:@ /fn /pissed_off
-act-up.png          /调皮 /:P /tp /act_up
-smile-big.png       /呲牙 /:D /cy /toothy_smile
-smile.png           /微笑 /:) /wx /small_smile
-sad.png             /难过 /:( /ng /sad
-glasses-cool.png    /酷 /:+ /kuk /cool
-doctor.png          /非典 /:# /feid /SARS
-silly.png           /抓狂 /:Q /zk /crazy
-sick.png            /吐 /:T /tu /vomit
-snicker.png         /偷笑 /;p /tx /titter
-cute.png            /可爱 /;-D /ka /cute
-disdain.png         /白眼 /;d /by /disdain
-arrogant.png        /傲慢 /;o /am /arrogant
-starving.png        /饥饿 /:g /jie /starving
-yawn.png            /困 /|-) /kun /sleepy
-terror.png          /惊恐 /:! /jk /terror
-sweat.png           /流汗 /:L /sweat
-smirk.png           /憨笑 /:> /hanx /smirk
-soldier.png         /大兵 /:; /db /soldier
-struggle.png        /奋斗 /;f /fendou /struggle
-curse.png           /咒骂 /:-S /zhm /curse
-question.png        /疑问 /? /yiw /question
-quiet.png           /嘘... /;x /xu /shh
-hypnotized.png      /晕 /;@ /yun /dizzy
-excruciating.png    /折磨 /:8 /zhem /excrutiating
-freaked-out.png     /衰 /;! /shuai /freaked_out
-skeleton.png        /骷髅 /!!! /kl /skeleton
-hammer.png          /敲打 /xx  /qiao /hammer
-bye.png             /再见        /bye /zj /bye
-go-away.png         /闪人 /go /shan /go
-tremble.png         /发抖 /shake /fad /shake
-in-love.png         /爱情 /love /aiq /love
-jump.png            /跳 /jump /tiao /jump
-search.png          /找 /find /zhao /search
-lashes.png          /美眉 /& /mm /beautiful_eyebrows
-pig.png             /猪头 /pig /zt /pig
-cat.png             /猫咪 /cat /mm /cat
-dog.png             /小狗 /dog /xg /dog
-hug-left.png        /拥抱 /hug /yb /hug
-coins.png           /钱 /$ /qianc /money
-lamp.png            /灯泡 /! /dp /lightbulb
-bowl.png            /酒杯 /cup /bei /cup
-cake.png            /蛋糕 /cake /dg /cake
-thunder.png         /闪电 /li /shd /lightning
-bomb.png            /炸弹 /bome /zhd /bomb
-knife.png           /刀 /kn /dao /knife
-soccerball.png      /足球 /footb /zq /soccer
-musical-note.png    /音乐 /music /yy /music
-poop.png            /便便 /shit /bb /shit
-coffee.png          /咖啡 /coffee /kf /coffee
-eat.png             /饭 /eat /fan /eat
-pill.png            /药丸 /pill /yw /pill
-rose.png            /玫瑰 /rose /mg /rose
-wilt.png            /凋谢 /fade /dx /wilt
-kiss.png            /吻 /kiss /wen /kiss
-love.png            /爱心 /heart /xin /heart
-love-over.png       /心碎 /break /xs /broken_heart
-meeting.png         /会议 /meeting /hy /meeting
-present.png         /礼物 /gift /lw /gift
-phone.png           /电话 /phone /dh /phone
-clock.png           /时间 /time /sj /time
-mail.png            /邮件 /email /yj /email
-tv.png              /电视 /TV /ds /TV
-sun.png             /太阳 /sun /ty /sun
-moon.png            /月亮 /moon /yl /moon
-good.png            /强 /strong /qiang /thumbs_up
-bad.png             /弱 /weak /ruo /thumbs_down
-handshake.png       /握手 /share /ws /handshake
-victory.png         /胜利 /v /shl /victory
-beauty.png          /美女 /<J> /mn /beauty
-qq.png              /Q仔 /<QQ> /qz /qq
-blowkiss.png        /飞吻 /<L> /fw /blow_kiss
-angry.png           /怄火 /<O> /oh  /angry
-liquor.png          /白酒 /<B> /bj /baijiu
-can.png             /汽水 /<U> /qsh /soda
-watermelon.png      /西瓜 /<W> /xigua /watermelon
-rain.png            /下雨 /<!!> /xy /rain
-cloudy.png          /多云 /<~> /duoy /cloudy
-snowman.png         /雪人 /<Z> /xr /snowman
-star.png            /星星 /<*> /xixing /star
-girl.png            /女 /<00> /nv /woman
-boy.png             /男 /<11> /nan /man
+shock.png           /惊讶   /:O      /jy       /surprised
+curl-lip.png        /撇嘴   /:~      /pz       /curl_lip
+desire.png          /色     /:*      /se       /desire
+dazed.png           /发呆   /:|      /dazed
+party.png           /得意   /8-)     /dy       /revel
+crying.png          /流泪   /:<      /ll       /cry
+bashful.png         /害羞   /:$      /hx       /bashful
+shut-mouth.png      /闭嘴   /:X      /bz       /shut_mouth
+sleepy.png          /睡     /:Z      /shui     /sleep
+weep.png            /大哭   /:'(     /dk       /weep
+embarrassed.png     /尴尬   /:-|     /gg       /embarassed
+pissed-off.png      /发怒   /:@      /fn       /pissed_off
+act-up.png          /调皮   /:P      /tp       /act_up
+smile-big.png       /呲牙   /:D      /cy       /toothy_smile
+smile.png           /微笑   /:)      /wx       /small_smile
+sad.png             /难过   /:(      /ng       /sad
+glasses-cool.png    /酷     /:+      /kuk      /cool
+doctor.png          /非典   /:#      /feid     /SARS
+silly.png           /抓狂   /:Q      /zk       /crazy
+sick.png            /吐     /:T      /tu       /vomit
+snicker.png         /偷笑   /;p      /tx       /titter
+cute.png            /可爱   /;-D     /ka       /cute
+disdain.png         /白眼   /;d      /by       /disdain
+arrogant.png        /傲慢   /;o      /am       /arrogant
+starving.png        /饥饿   /:g      /jie      /starving
+yawn.png            /困     /|-)     /kun      /sleepy
+terror.png          /惊恐   /:!      /jk       /terror
+sweat.png           /流汗   /:L      /sweat
+smirk.png           /憨笑   /:>      /hanx     /smirk
+soldier.png         /大兵   /:;      /db       /soldier
+struggle.png        /奋斗   /;f      /fendou   /struggle
+curse.png           /咒骂   /:-S     /zhm      /curse
+question.png        /疑问   /?       /yiw      /question
+quiet.png           /嘘...  /;x      /xu       /shh
+hypnotized.png      /晕     /;@      /yun      /dizzy
+excruciating.png    /折磨   /:8      /zhem     /excrutiating
+freaked-out.png     /衰     /;!      /shuai    /freaked_out
+skeleton.png        /骷髅   /!!!     /kl       /skeleton
+hammer.png          /敲打   /xx      /qiao     /hammer
+bye.png             /再见   /bye     /zj       /bye
+go-away.png         /闪人   /go      /shan     /go
+tremble.png         /发抖   /shake   /fad      /shake
+in-love.png         /爱情   /love    /aiq      /love
+jump.png            /跳     /jump    /tiao     /jump
+search.png          /找     /find    /zhao     /search
+lashes.png          /美眉   /&       /mm       /beautiful_eyebrows
+pig.png             /猪头   /pig     /zt       /pig
+cat.png             /猫咪   /cat     /mm       /cat
+dog.png             /小狗   /dog     /xg       /dog
+hug-left.png        /拥抱   /hug     /yb       /hug
+coins.png           /钱     /$       /qianc    /money
+lamp.png            /灯泡   /!       /dp       /lightbulb
+bowl.png            /酒杯   /cup     /bei      /cup
+cake.png            /蛋糕   /cake    /dg       /cake
+thunder.png         /闪电   /li      /shd      /lightning
+bomb.png            /炸弹   /bome    /zhd      /bomb
+knife.png           /刀     /kn      /dao      /knife
+soccerball.png      /足球   /footb   /zq       /soccer
+musical-note.png    /音乐   /music   /yy       /music
+poop.png            /便便   /shit    /bb       /shit
+coffee.png          /咖啡   /coffee  /kf       /coffee
+eat.png             /饭     /eat     /fan      /eat
+pill.png            /药丸   /pill    /yw       /pill
+rose.png            /玫瑰   /rose    /mg       /rose
+wilt.png            /凋谢   /fade    /dx       /wilt
+kiss.png            /吻     /kiss    /wen      /kiss
+love.png            /爱心   /heart   /xin      /heart
+love-over.png       /心碎   /break   /xs       /broken_heart
+meeting.png         /会议   /meeting /hy       /meeting
+present.png         /礼物   /gift    /lw       /gift
+phone.png           /电话   /phone   /dh       /phone
+clock.png           /时间   /time    /sj       /time
+mail.png            /邮件   /email   /yj       /email
+tv.png              /电视   /TV      /ds       /TV
+sun.png             /太阳   /sun     /ty       /sun
+moon.png            /月亮   /moon    /yl       /moon
+good.png            /强     /strong  /qiang    /thumbs_up
+bad.png             /弱     /weak    /ruo      /thumbs_down
+handshake.png       /握手   /share   /ws       /handshake
+victory.png         /胜利   /v       /shl      /victory
+beauty.png          /美女   /<J>     /mn       /beauty
+qq.png              /Q仔    /<QQ>    /qz       /qq
+blowkiss.png        /飞吻   /<L>     /fw       /blow_kiss
+angry.png           /怄火   /<O>     /oh       /angry
+liquor.png          /白酒   /<B>     /bj       /baijiu
+can.png             /汽水   /<U>     /qsh      /soda
+watermelon.png      /西瓜   /<W>     /xigua    /watermelon
+rain.png            /下雨   /<!!>    /xy       /rain
+cloudy.png          /多云   /<~>     /duoy     /cloudy
+snowman.png         /雪人   /<Z>     /xr       /snowman
+star.png            /星星   /<*>     /xixing   /star
+girl.png            /女     /<00>    /nv       /woman
+boy.png             /男     /<11>    /nan      /man
 
 ### Following ICQ 5.1
 [ICQ]
@@ -300,7 +301,7 @@
 sweat.png           #:-S    #:-s
 rotfl.png           =))    
 #loser              L-)     l-)     MISSING/YAHOO 6: "Loser!"
-party.png	    <:-P    <:-p
+party.png           <:-P    <:-p
 cowboy.png          <):)
 desire.png          8->
 alien.png           =:)     >-)
@@ -333,7 +334,7 @@
 #yahoo_youkiddingme.gif  :-j     :-J     TODO
 
 ### These only work in a certain IMvironment
-#yahoo_malefighter1.gif	 o->     O->
-#yahoo_malefighter2.gif	 o=>     O=>
+#yahoo_malefighter1.gif o->     O->
+#yahoo_malefighter2.gif o=>     O=>
 #yahoo_femalefighter.gif o-+     O-+
 yin-yang.png        (%)
Binary file pidgin/pixmaps/protocols/16/jabber.png has changed
Binary file pidgin/pixmaps/protocols/22/jabber.png has changed
Binary file pidgin/pixmaps/protocols/48/jabber.png has changed
--- a/pidgin/pixmaps/toolbar/16/Makefile.am	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/toolbar/16/Makefile.am	Thu May 03 23:23:44 2007 +0000
@@ -10,6 +10,7 @@
 		insert-link.png \
 		message-new.png \
 		plugins.png \
+		send-file.png \
 		unblock.png
 
 pidgintoolbarpixdir = $(datadir)/pixmaps/pidgin/toolbar/16
Binary file pidgin/pixmaps/toolbar/16/send-file.png has changed
--- a/pidgin/pixmaps/tray/22/Makefile.am	Thu May 03 22:10:19 2007 +0000
+++ b/pidgin/pixmaps/tray/22/Makefile.am	Thu May 03 23:23:44 2007 +0000
@@ -1,4 +1,4 @@
-SUBSIRS = scalable
+SUBDIRS = scalable
 
 TRAY_ICONS =	tray-away.png \
 		tray-busy.png \