changeset 25516:708198aadad8

propagate from branch 'im.pidgin.pidgin' (head c09099530cc12734d4420f3fcc37e18347a16d5e) to branch 'im.pidgin.pidgin.yaz' (head 021ad3c9ed763e5e5f5678b9a081af148b43d064)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 21 Jun 2007 06:04:16 +0000
parents 37af7de81430 (current diff) af7b944374ba (diff)
children d28015a513a9
files libpurple/protocols/oscar/oscar.c libpurple/protocols/qq/group_misc.c libpurple/protocols/qq/group_misc.h pidgin/gtkconv.c pidgin/gtkimhtml.c pidgin/gtkutils.c pidgin/gtkutils.h
diffstat 54 files changed, 266 insertions(+), 179 deletions(-) [+]
line wrap: on
line diff
--- a/finch/finch.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/finch.c	Thu Jun 21 06:04:16 2007 +0000
@@ -19,6 +19,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include "finch.h"
+
 #include "account.h"
 #include "conversation.h"
 #include "core.h"
@@ -37,7 +39,6 @@
 #include "whiteboard.h"
 
 #include "gntdebug.h"
-#include "finch.h"
 #include "gntprefs.h"
 #include "gntui.h"
 #include "gntidle.h"
--- a/finch/gntaccount.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntaccount.c	Thu Jun 21 06:04:16 2007 +0000
@@ -33,6 +33,8 @@
 #include <gnttree.h>
 #include <gntwindow.h>
 
+#include "finch.h"
+
 #include <account.h>
 #include <accountopt.h>
 #include <connection.h>
@@ -42,7 +44,6 @@
 
 #include "gntaccount.h"
 #include "gntblist.h"
-#include "finch.h"
 
 #include <string.h>
 
--- a/finch/gntblist.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntblist.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include "finch.h"
+
 #include <account.h>
 #include <blist.h>
 #include <notify.h>
@@ -33,7 +35,6 @@
 #include <util.h>
 #include "debug.h"
 
-#include "finch.h"
 #include "gntbox.h"
 #include "gntcombobox.h"
 #include "gntentry.h"
--- a/finch/gntconn.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntconn.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include "finch.h"
+
 #include "account.h"
 #include "core.h"
 #include "connection.h"
@@ -29,7 +31,6 @@
 #include "request.h"
 
 #include "gntconn.h"
-#include "finch.h"
 
 #define INITIAL_RECON_DELAY_MIN  8000
 #define INITIAL_RECON_DELAY_MAX 60000
--- a/finch/gntconv.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntconv.c	Thu Jun 21 06:04:16 2007 +0000
@@ -24,12 +24,13 @@
  */
 #include <string.h>
 
+#include "finch.h"
+
 #include <cmds.h>
 #include <idle.h>
 #include <prefs.h>
 #include <util.h>
 
-#include "finch.h"
 #include "gntaccount.h"
 #include "gntblist.h"
 #include "gntconv.h"
--- a/finch/gntnotify.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntnotify.c	Thu Jun 21 06:04:16 2007 +0000
@@ -29,10 +29,11 @@
 #include <gnttree.h>
 #include <gntutils.h>
 
+#include "finch.h"
+
 #include <util.h>
 
 #include "gntnotify.h"
-#include "finch.h"
 
 static struct
 {
--- a/finch/gntplugin.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntplugin.c	Thu Jun 21 06:04:16 2007 +0000
@@ -29,10 +29,11 @@
 #include <gntline.h>
 #include <gnttree.h>
 
+#include "finch.h"
+
 #include "notify.h"
 #include "request.h"
 
-#include "finch.h"
 #include "gntplugin.h"
 #include "gntrequest.h"
 
--- a/finch/gntprefs.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntprefs.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,10 +22,11 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include "finch.h"
+
 #include <prefs.h>
 #include <savedstatuses.h>
 
-#include "finch.h"
 #include "gntprefs.h"
 #include "gntrequest.h"
 
--- a/finch/gntstatus.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntstatus.c	Thu Jun 21 06:04:16 2007 +0000
@@ -31,10 +31,11 @@
 #include <gntline.h>
 #include <gnttree.h>
 
+#include "finch.h"
+
 #include <notify.h>
 #include <request.h>
 
-#include "finch.h"
 #include "gntstatus.h"
 
 static struct
--- a/finch/gntui.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/gntui.c	Thu Jun 21 06:04:16 2007 +0000
@@ -19,6 +19,8 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
+#include "internal.h"
+
 #include "gntui.h"
 
 #include "gntaccount.h"
@@ -33,7 +35,6 @@
 #include "gntprefs.h"
 #include "gntrequest.h"
 #include "gntstatus.h"
-#include "internal.h"
 
 #include <prefs.h>
 
--- a/finch/libgnt/gntwm.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/libgnt/gntwm.c	Thu Jun 21 06:04:16 2007 +0000
@@ -1464,12 +1464,39 @@
 	return FALSE;
 }
 
+#if !GLIB_CHECK_VERSION(2,4,0)
+typedef struct
+{
+	GntWM *wm;
+	GntWS *ret;
+	gchar *title;
+} title_search;
+
+static void match_title_search(gpointer key, gpointer value, gpointer search)
+{
+	title_search *s = search;
+	if (s->ret)
+		return;
+	if (match_title(key, NULL, s->title))
+		s->ret = g_hash_table_lookup(s->wm->title_places, key);
+}
+#endif
+
 static GntWS *
 new_widget_find_workspace(GntWM *wm, GntWidget *widget, gchar *wid_title)
 {
 	GntWS *ret;
 	const gchar *name;
+#if GLIB_CHECK_VERSION(2,4,0)
 	ret = g_hash_table_find(wm->title_places, match_title, wid_title);
+#else
+	title_search *s = NULL;
+	s = g_new0(title_search, 1);
+	s->wm = wm;
+	s->title = wid_title;
+	g_hash_table_foreach(wm->title_places, match_title_search, s);
+	ret = s->ret;
+#endif
 	if (ret)
 		return ret;
 	name = gnt_widget_get_name(widget);
--- a/finch/libgnt/wms/s.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/finch/libgnt/wms/s.c	Thu Jun 21 06:04:16 2007 +0000
@@ -1,6 +1,8 @@
 #include <string.h>
 #include <sys/types.h>
 
+#include "internal.h"
+
 #include "gnt.h"
 #include "gntbox.h"
 #include "gntmenu.h"
--- a/libpurple/example/nullclient.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/example/nullclient.c	Thu Jun 21 06:04:16 2007 +0000
@@ -20,6 +20,10 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
  */
+
+/* XXX: we probably shouldn't include internal.h in examples */
+#include "internal.h"
+
 #include "account.h"
 #include "conversation.h"
 #include "core.h"
--- a/libpurple/imgstore.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/imgstore.h	Thu Jun 21 06:04:16 2007 +0000
@@ -28,7 +28,6 @@
 
 #include <glib.h>
 
-struct _PurpleStoredImage;
 typedef struct _PurpleStoredImage PurpleStoredImage;
 
 #ifdef __cplusplus
--- a/libpurple/plugins/perl/perl-common.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/plugins/perl/perl-common.h	Thu Jun 21 06:04:16 2007 +0000
@@ -9,6 +9,9 @@
 #include <EXTERN.h>
 #include <perl.h>
 
+/* XXX: perl defines it's own _ but I think it's safe to undef it */
+#undef _
+#include "internal.h"
 #include "plugin.h"
 #include "value.h"
 
--- a/libpurple/protocols/gg/gg.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/gg/gg.h	Thu Jun 21 06:04:16 2007 +0000
@@ -25,6 +25,7 @@
 #define _PURPLE_GG_H
 
 #include <libgadu.h>
+#include "internal.h"
 #include "search.h"
 #include "connection.h"
 
--- a/libpurple/protocols/jabber/libxmpp.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/jabber/libxmpp.c	Thu Jun 21 06:04:16 2007 +0000
@@ -25,8 +25,9 @@
  * share code.
  */
 
+#include "internal.h"
+
 #include "accountopt.h"
-#include "internal.h"
 #include "version.h"
 
 #include "iq.h"
--- a/libpurple/protocols/jabber/si.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/jabber/si.c	Thu Jun 21 06:04:16 2007 +0000
@@ -20,9 +20,9 @@
  *
  */
 
-#include "blist.h"
+#include "internal.h"
 
-#include "internal.h"
+#include "blist.h"
 #include "cipher.h"
 #include "debug.h"
 #include "ft.h"
--- a/libpurple/protocols/oscar/oscar.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu Jun 21 06:04:16 2007 +0000
@@ -5600,7 +5600,7 @@
 	status = purple_presence_get_active_status(presence);
 	id = purple_status_get_id(status);
 
-	if (!purple_presence_is_online(presence))
+	if ((od != NULL) && !purple_presence_is_online(presence))
 	{
 		char *gname = aim_ssi_itemlist_findparentname(od->ssi.local, b->name);
 		if (aim_ssi_waitingforauth(od->ssi.local, gname, b->name))
--- a/libpurple/protocols/qq/Makefile.am	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/Makefile.am	Thu Jun 21 06:04:16 2007 +0000
@@ -34,8 +34,6 @@
 	group_info.h \
 	group_join.c \
 	group_join.h \
-	group_misc.c \
-	group_misc.h \
 	group_network.c \
 	group_network.h \
 	group_opt.c \
--- a/libpurple/protocols/qq/buddy_list.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/buddy_list.c	Thu Jun 21 06:04:16 2007 +0000
@@ -23,8 +23,10 @@
  */
 
 #include <string.h>
+
+#include "qq.h"
+
 #include "debug.h"
-
 #include "notify.h"
 #include "utils.h"
 #include "packet_parse.h"
@@ -35,9 +37,8 @@
 #include "char_conv.h"
 #include "crypt.h"
 #include "header_info.h"
-#include "keep_alive.h"	
+#include "keep_alive.h"
 #include "send_core.h"
-#include "qq.h"	
 #include "group.h"
 #include "group_find.h"
 #include "group_internal.h"
--- a/libpurple/protocols/qq/buddy_status.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/buddy_status.c	Thu Jun 21 06:04:16 2007 +0000
@@ -23,6 +23,7 @@
  */
 
 #include <string.h>
+#include "internal.h"
 #include "debug.h"
 #include "prefs.h"
 
--- a/libpurple/protocols/qq/file_trans.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/file_trans.c	Thu Jun 21 06:04:16 2007 +0000
@@ -26,6 +26,8 @@
 #define random rand
 #endif
 
+#include "internal.h"
+
 #include "debug.h"
 #include "ft.h"
 #include "cipher.h"
--- a/libpurple/protocols/qq/group_conv.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_conv.c	Thu Jun 21 06:04:16 2007 +0000
@@ -23,11 +23,12 @@
  */
 
 #include <glib.h>
+#include "qq.h"
+
 #include "conversation.h"
 
 #include "buddy_status.h"
 #include "group_conv.h"
-#include "qq.h"
 #include "utils.h"
 
 /* show group conversation window */
--- a/libpurple/protocols/qq/group_find.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_find.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,13 +22,14 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "qq.h"
+
 #include "conversation.h"
 #include "debug.h"
 #include "util.h"
 
 #include "group_find.h"
 #include "group_network.h"
-#include "qq.h"
 #include "utils.h"
 
 /* find the internal_group_id by the reply packet sequence
--- a/libpurple/protocols/qq/group_free.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_free.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "debug.h"
 
 #include "buddy_status.h"
--- a/libpurple/protocols/qq/group_im.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_im.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "conversation.h"
 #include "debug.h"
 #include "notify.h"
--- a/libpurple/protocols/qq/group_info.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_info.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "conversation.h"
 #include "debug.h"
 
--- a/libpurple/protocols/qq/group_internal.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_internal.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,13 +22,13 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
 #include "blist.h"
 #include "debug.h"
 
 #include "buddy_opt.h"
 #include "group_free.h"
 #include "group_internal.h"
-#include "group_misc.h"
 #include "utils.h"
 
 static gchar *_qq_group_set_my_status_desc(qq_group *group)
--- a/libpurple/protocols/qq/group_join.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_join.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "debug.h"
 #include "notify.h"
 #include "request.h"
--- a/libpurple/protocols/qq/group_misc.c	Wed Jun 20 04:56:08 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-/**
- * @file group_misc.c
- *
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include "debug.h"
-
-#include "buddy_status.h"
-#include "group_misc.h"
-#include "utils.h"
--- a/libpurple/protocols/qq/group_misc.h	Wed Jun 20 04:56:08 2007 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/**
- * @file group_misc.h
- *
- * purple
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here.  Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#ifndef _QQ_GROUP_MISC_H_
-#define _QQ_GROUP_MISC_H_
-
-#include <glib.h>
-#include "group.h"
-
-#endif
--- a/libpurple/protocols/qq/group_network.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_network.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "debug.h"
 #include "notify.h"
 
--- a/libpurple/protocols/qq/group_opt.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_opt.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "qq.h"
+
 #include "debug.h"
 #include "notify.h"
 #include "request.h"
@@ -35,7 +37,6 @@
 #include "group_network.h"
 #include "group_opt.h"
 #include "packet_parse.h"
-#include "qq.h"
 #include "utils.h"
 
 /* TODO: can't we use qsort here? */
--- a/libpurple/protocols/qq/group_search.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/group_search.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "debug.h"
 
 #include "char_conv.h"
--- a/libpurple/protocols/qq/header_info.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/header_info.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "header_info.h"
 
 #define QQ_CLIENT_062E 0x062e	/* GB QQ2000c build 0630 */
--- a/libpurple/protocols/qq/im.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/im.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "conversation.h"
 #include "debug.h"
 #include "internal.h"
--- a/libpurple/protocols/qq/keep_alive.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/keep_alive.c	Thu Jun 21 06:04:16 2007 +0000
@@ -28,6 +28,8 @@
  * Puzzlebird, Nov-Dec 2002
  */
 
+#include "internal.h"
+
 #include "debug.h"
 #include "server.h"
 
--- a/libpurple/protocols/qq/qq.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/qq.h	Thu Jun 21 06:04:16 2007 +0000
@@ -26,8 +26,8 @@
 #define _QQ_QQ_H_
 
 #include <glib.h>
+#include "internal.h"
 #include "ft.h"
-#include "internal.h"
 #include "proxy.h"
 #include "roomlist.h"
 
--- a/libpurple/protocols/qq/send_file.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/send_file.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,6 +22,8 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "qq.h"
+
 #include "send_file.h"
 #include "debug.h"
 #include "network.h"
@@ -34,7 +36,6 @@
 #include "im.h"
 #include "keep_alive.h"
 #include "packet_parse.h"
-#include "qq.h"
 #include "send_core.h"
 #include "utils.h"
 
--- a/libpurple/protocols/qq/sendqueue.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/qq/sendqueue.c	Thu Jun 21 06:04:16 2007 +0000
@@ -22,9 +22,10 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "connection.h"
 #include "debug.h"
-#include "internal.h"
 #include "notify.h"
 #include "prefs.h"
 #include "request.h"
--- a/libpurple/protocols/yahoo/yahoo_auth.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo_auth.c	Thu Jun 21 06:04:16 2007 +0000
@@ -7,6 +7,8 @@
  *
  */
 
+#include "internal.h"
+
 #include "yahoo.h"
 #include "yahoo_auth.h"
 
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c	Thu Jun 21 06:04:16 2007 +0000
@@ -20,8 +20,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "prpl.h"
-#include "internal.h"
 #include "util.h"
 #include "debug.h"
 #include "notify.h"
--- a/libpurple/protocols/yahoo/yahoochat.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoochat.c	Thu Jun 21 06:04:16 2007 +0000
@@ -26,6 +26,8 @@
  *
  */
 
+#include "internal.h"
+
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
@@ -37,7 +39,6 @@
 #include "conversation.h"
 #include "notify.h"
 #include "util.h"
-#include "internal.h"
 
 #include "yahoo.h"
 #include "yahoo_packet.h"
--- a/libpurple/protocols/zephyr/ZVariables.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/libpurple/protocols/zephyr/ZVariables.c	Thu Jun 21 06:04:16 2007 +0000
@@ -9,6 +9,7 @@
  *	"mit-copyright.h". 
  */
 
+#include "libpurple/internal.h"
 #include "internal.h"
 #include "util.h"
 
--- a/pidgin/gtkblist.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkblist.c	Thu Jun 21 06:04:16 2007 +0000
@@ -151,11 +151,7 @@
 	if (!gtkblist)
 		return "dim grey";
 	if (!dim_grey_string[0]) {
-		GtkStyle *style = gtk_widget_get_style(gtkblist->treeview);
-		snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
-			 style->text_aa[GTK_STATE_NORMAL].red >> 8,
-			 style->text_aa[GTK_STATE_NORMAL].green >> 8,
-			 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
+		snprintf(dim_grey_string, sizeof(dim_grey_string), "%s", pidgin_get_dim_grey_string(gtkblist->treeview)); 
 	}
 	return dim_grey_string;
 }
@@ -311,6 +307,7 @@
 	gtk_blist_join_chat(chat);
 }
 
+#if GTK_CHECK_VERSION(2,6,0)
 static void gtk_blist_renderer_editing_cancelled_cb(GtkCellRenderer *renderer, PurpleBuddyList *list)
 {
 	editing_blist = FALSE;
@@ -355,6 +352,7 @@
 	}
 	editing_blist = TRUE;
 }
+#endif
 
 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1,
 					 char *arg2, PurpleBuddyList *list)
@@ -2092,51 +2090,6 @@
 	}
 }
 
-static void
-roundify(GdkPixbuf *pixbuf) {
-	int width, height, rowstride;
-	guchar *pixels;
-
-	if (!gdk_pixbuf_get_has_alpha(pixbuf))
-		return;
-
-	width = gdk_pixbuf_get_width(pixbuf);
-	height = gdk_pixbuf_get_height(pixbuf);
-	rowstride = gdk_pixbuf_get_rowstride(pixbuf);
-	pixels = gdk_pixbuf_get_pixels(pixbuf);
-
-	if (width < 6 || height < 6)
-		return;
-
-	/* Top left */
-	pixels[3] = 0;
-	pixels[7] = 0x80;
-	pixels[11] = 0xC0;
-	pixels[rowstride + 3] = 0x80;
-	pixels[rowstride * 2 + 3] = 0xC0;
-
-	/* Top right */
-	pixels[width * 4 - 1] = 0;
-	pixels[width * 4 - 5] = 0x80;
-	pixels[width * 4 - 9] = 0xC0;
-	pixels[rowstride + (width * 4) - 1] = 0x80;
-	pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
-
-	/* Bottom left */
-	pixels[(height - 1) * rowstride + 3] = 0;
-	pixels[(height - 1) * rowstride + 7] = 0x80;
-	pixels[(height - 1) * rowstride + 11] = 0xC0;
-	pixels[(height - 2) * rowstride + 3] = 0x80;
-	pixels[(height - 3) * rowstride + 3] = 0xC0;
-
-	/* Bottom right */
-	pixels[height * rowstride - 1] = 0;
-	pixels[(height - 1) * rowstride - 1] = 0x80;
-	pixels[(height - 2) * rowstride - 1] = 0xC0;
-	pixels[height * rowstride - 5] = 0x80;
-	pixels[height * rowstride - 9] = 0xC0;
-}
-
 /* Altered from do_colorshift in gnome-panel */
 static void
 do_alphashift (GdkPixbuf *dest, GdkPixbuf *src, int shift)
@@ -2273,7 +2226,7 @@
 			gdk_pixbuf_fill(ret, 0x00000000);
 			gdk_pixbuf_scale(buf, ret, (32-scale_width)/2, (32-scale_height)/2, scale_width, scale_height, (32-scale_width)/2, (32-scale_height)/2, (double)scale_width/(double)orig_width, (double)scale_height/(double)orig_height, GDK_INTERP_BILINEAR);
 			if (pidgin_gdk_pixbuf_is_opaque(ret))
-				roundify(ret);
+				pidgin_gdk_pixbuf_make_round(ret);
 		} else {
 			ret = gdk_pixbuf_scale_simple(buf,scale_width,scale_height, GDK_INTERP_BILINEAR);
 		}
@@ -3282,7 +3235,7 @@
 	return ret;
 }
 
-gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected)
+gchar *pidgin_blist_get_name_markup(PurpleBuddy *b, gboolean selected, gboolean aliased)
 {
 	const char *name;
 	char *esc, *text = NULL;
@@ -3307,15 +3260,19 @@
 	}
 
 	/* XXX Good luck cleaning up this crap */
-
-	contact = (PurpleContact*)((PurpleBlistNode*)b)->parent;
-	if(contact)
-		gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data;
-
-	if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
-		name = contact->alias;
-	else
-		name = purple_buddy_get_alias(b);
+	if (aliased) {
+		contact = (PurpleContact*)((PurpleBlistNode*)b)->parent;
+		if(contact)
+			gtkcontactnode = ((PurpleBlistNode*)contact)->ui_data;
+
+		if(gtkcontactnode && !gtkcontactnode->contact_expanded && contact->alias)
+			name = contact->alias;
+		else
+			name = purple_buddy_get_alias(b);
+	} else {
+		name = b->name;
+	}
+	
 	esc = g_markup_escape_text(name, strlen(name));
 
 	presence = purple_buddy_get_presence(b);
@@ -4463,8 +4420,10 @@
 #endif
 										"markup", NAME_COLUMN,
 										NULL);
+#if GTK_CHECK_VERSION(2,6,0)
 	g_signal_connect(G_OBJECT(rend), "editing-started", G_CALLBACK(gtk_blist_renderer_editing_started_cb), NULL);
 	g_signal_connect(G_OBJECT(rend), "editing-canceled", G_CALLBACK(gtk_blist_renderer_editing_cancelled_cb), list);
+#endif
 	g_signal_connect(G_OBJECT(rend), "edited", G_CALLBACK(gtk_blist_renderer_edited_cb), list);
 	g_object_set(rend, "ypad", 0, "yalign", 0.5, NULL);
 #if GTK_CHECK_VERSION(2,6,0)
@@ -4967,7 +4926,7 @@
 	}
 
 	emblem = pidgin_blist_get_emblem((PurpleBlistNode*) buddy);
-	mark = pidgin_blist_get_name_markup(buddy, selected);
+	mark = pidgin_blist_get_name_markup(buddy, selected, TRUE);
 
 	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/blist/show_idle_time") &&
 		purple_presence_is_idle(presence) &&
--- a/pidgin/gtkblist.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkblist.h	Thu Jun 21 06:04:16 2007 +0000
@@ -365,8 +365,9 @@
  *
  * @param buddy The buddy to return markup from
  * @param selected  Whether this buddy is selected. If TRUE, the markup will not change the color.
+ * @param aliased  TRUE to return the appropriate alias of this buddy, FALSE to return its screenname
  * @return The markup for this buddy
  */
-gchar *pidgin_blist_get_name_markup(PurpleBuddy *buddy, gboolean selected);
+gchar *pidgin_blist_get_name_markup(PurpleBuddy *buddy, gboolean selected, gboolean aliased);
 
 #endif /* _PIDGINBLIST_H_ */
--- a/pidgin/gtkconv.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkconv.c	Thu Jun 21 06:04:16 2007 +0000
@@ -2360,7 +2360,8 @@
 	gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status);
 	gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status);
 
-	gtk_list_store_set(gtkconv->infopane_model, &(gtkconv->infopane_iter),
+	gtk_list_store_set(GTK_LIST_STORE(gtkconv->infopane_model), 
+			&(gtkconv->infopane_iter),
 			ICON_COLUMN, status, -1);
 
 	if (status != NULL)
@@ -2418,12 +2419,22 @@
 	gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL);
 	buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
 
-	pidgin_buddy_icon_get_scale_size(buf, &prpl_info->icon_spec,
-			PURPLE_ICON_SCALE_DISPLAY, &scale_width, &scale_height);
-
-	/* this code is ugly, and scares me */
-	scale = gdk_pixbuf_scale_simple(buf, 32, 32,
+ 	scale_width = gdk_pixbuf_get_width(buf);
+        scale_height = gdk_pixbuf_get_height(buf);
+        if (scale_width == scale_height) {
+		scale_width = scale_height = 32;
+	} else if (scale_height > scale_width) {
+                scale_width = 32 * scale_width / scale_height;
+                scale_height = 32;
+        } else {
+                scale_height = 32 * scale_height / scale_width;
+                scale_width = 32;
+        }
+
+	scale = gdk_pixbuf_scale_simple(buf, scale_width, scale_height,
 		GDK_INTERP_BILINEAR);
+	if (pidgin_gdk_pixbuf_is_opaque(scale))
+		pidgin_gdk_pixbuf_make_round(scale);
 
 	gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->u.im->icon), scale);
 	g_object_unref(G_OBJECT(scale));
@@ -4295,11 +4306,9 @@
 		
 		hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
 		gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
-		gtk_widget_show(hbox);
 
 		label = gtk_label_new(_("Topic:"));
 		gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-		gtk_widget_show(label);
 
 		gtkchat->topic_text = gtk_entry_new();
 
@@ -4311,7 +4320,6 @@
 		}
 
 		gtk_box_pack_start(GTK_BOX(hbox), gtkchat->topic_text, TRUE, TRUE, 0);
-		gtk_widget_show(gtkchat->topic_text);
 		g_signal_connect(G_OBJECT(gtkchat->topic_text), "key_press_event",
 			             G_CALLBACK(entry_key_press_cb), gtkconv);
 	}
@@ -4433,7 +4441,8 @@
 
 	gtkconv->infopane = gtk_cell_view_new();
 	gtkconv->infopane_model = gtk_list_store_new(NUM_COLUMNS, GDK_TYPE_PIXBUF, G_TYPE_STRING);
-	gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), gtkconv->infopane_model);
+	gtk_cell_view_set_model(GTK_CELL_VIEW(gtkconv->infopane), 
+				GTK_TREE_MODEL(gtkconv->infopane_model));
 	gtk_list_store_append(gtkconv->infopane_model, &(gtkconv->infopane_iter));
 	gtk_box_pack_start(GTK_BOX(gtkconv->infopane_hbox), gtkconv->infopane, TRUE, TRUE, 0);
         path = gtk_tree_path_new_from_string("0");
@@ -6182,13 +6191,13 @@
 		pidgin_themes_smiley_themeize(PIDGIN_CONVERSATION(conv)->imhtml);
 
 	if ((fields & PIDGIN_CONV_COLORIZE_TITLE) ||
-			(fields & PIDGIN_CONV_SET_TITLE))
+			(fields & PIDGIN_CONV_SET_TITLE) ||
+    			(fields & PIDGIN_CONV_TOPIC))
 	{
 		char *title, *title_tmp;
 		PurpleConvIm *im = NULL;
 		PurpleAccount *account = purple_conversation_get_account(conv);
-		PurpleBuddy *buddy; 
-		char *markup;
+		char *markup = NULL;
 		AtkObject *accessibility_obj;
 		gboolean ellipsis = FALSE;
 		/* I think this is a little longer than it needs to be but I'm lazy. */
@@ -6205,11 +6214,19 @@
 		else
 			title = g_strdup(purple_conversation_get_title(conv));
 
-		buddy = purple_find_buddy(account, conv->name);
-		if (buddy)
-			markup = pidgin_blist_get_name_markup(buddy, FALSE);
-		else
-			markup = title;
+		if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
+		 	PurpleBuddy *buddy = purple_find_buddy(account, conv->name);
+			if (buddy)
+				markup = pidgin_blist_get_name_markup(buddy, FALSE, FALSE);
+			else
+				markup = title;
+		} else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
+			PurpleConvChat *chat = PURPLE_CONV_CHAT(conv);
+			markup = g_strdup_printf("%s\n<span color='%s' size='smaller'>%s</span>",
+						purple_conversation_get_title(conv),
+						pidgin_get_dim_grey_string(gtkconv->infopane),
+						purple_conv_chat_get_topic(chat));
+		}
 		gtk_list_store_set(gtkconv->infopane_model, &(gtkconv->infopane_iter),
 				TEXT_COLUMN, markup, -1);
 	
@@ -6485,19 +6502,36 @@
 	}
 
 	if (gdk_pixbuf_animation_is_static_image(gtkconv->u.im->anim)) {
+		GdkPixbuf *stat;
 		gtkconv->u.im->iter = NULL;
-		buf = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
+		stat = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim);
+		buf = gdk_pixbuf_add_alpha(stat, FALSE, 0, 0, 0);
 	} else {
+		GdkPixbuf *stat;
 		gtkconv->u.im->iter =
 			gdk_pixbuf_animation_get_iter(gtkconv->u.im->anim, NULL); /* LEAK */
-		buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
+		stat = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter);
+		buf = gdk_pixbuf_add_alpha(stat, FALSE, 0, 0, 0);
 		if (gtkconv->u.im->animate)
 			start_anim(NULL, gtkconv);
 	}
 
-	scale = gdk_pixbuf_scale_simple(buf, 32, 32,
+	scale_width = gdk_pixbuf_get_width(buf);
+	scale_height = gdk_pixbuf_get_height(buf);
+	if (scale_width == scale_height) {
+		scale_width = scale_height = 32;
+	} else if (scale_height > scale_width) {
+		scale_width = 32 * scale_width / scale_height;
+		scale_height = 32;
+	} else {
+		scale_height = 32 * scale_height / scale_width;
+		scale_width = 32;
+	}
+	scale = gdk_pixbuf_scale_simple(buf, scale_width, scale_height,
 				GDK_INTERP_BILINEAR);
-
+	g_object_unref(buf);
+	if (pidgin_gdk_pixbuf_is_opaque(scale))
+		pidgin_gdk_pixbuf_make_round(scale);
 	gtkconv->u.im->icon_container = gtk_vbox_new(FALSE, 0);
 
 	event = gtk_event_box_new();
@@ -6508,8 +6542,6 @@
 
 	gtkconv->u.im->icon = gtk_image_new_from_pixbuf(scale);
 	gtkconv->auto_resize = TRUE;
-	/* Reset the size request to allow the buddy icon to resize */
-	g_idle_add(reset_auto_resize_cb, gtkconv);
 	gtk_container_add(GTK_CONTAINER(event), gtkconv->u.im->icon);
 	gtk_widget_show(gtkconv->u.im->icon);
 
--- a/pidgin/gtkconv.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkconv.h	Thu Jun 21 06:04:16 2007 +0000
@@ -160,7 +160,7 @@
 	time_t newday;
 	GtkWidget *infopane_hbox;
 	GtkWidget *infopane;
-	GtkTreeModel *infopane_model;
+	GtkListStore *infopane_model;
 	GtkTreeIter infopane_iter;
 };
 
--- a/pidgin/gtkimhtml.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkimhtml.c	Thu Jun 21 06:04:16 2007 +0000
@@ -29,6 +29,7 @@
 #endif
 
 #include "pidgin.h"
+#include "internal.h"
 
 #include "debug.h"
 #include "util.h"
--- a/pidgin/gtksavedstatuses.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtksavedstatuses.c	Thu Jun 21 06:04:16 2007 +0000
@@ -23,8 +23,9 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
+#include "internal.h"
+
 #include "account.h"
-#include "internal.h"
 #include "notify.h"
 #include "request.h"
 #include "savedstatuses.h"
--- a/pidgin/gtkstatusbox.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkstatusbox.c	Thu Jun 21 06:04:16 2007 +0000
@@ -41,10 +41,11 @@
 
 #include <gdk/gdkkeysyms.h>
 
+#include "internal.h"
+
 #include "account.h"
 #include "buddyicon.h"
 #include "core.h"
-#include "internal.h"
 #include "imgstore.h"
 #include "network.h"
 #include "request.h"
--- a/pidgin/gtkutils.c	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkutils.c	Thu Jun 21 06:04:16 2007 +0000
@@ -3066,6 +3066,65 @@
         return TRUE;
 }
 
+void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf) {
+	int width, height, rowstride;
+        guchar *pixels;
+        if (!gdk_pixbuf_get_has_alpha(pixbuf))
+                return;
+        width = gdk_pixbuf_get_width(pixbuf);
+        height = gdk_pixbuf_get_height(pixbuf);
+        rowstride = gdk_pixbuf_get_rowstride(pixbuf);
+        pixels = gdk_pixbuf_get_pixels(pixbuf);
+
+        if (width < 6 || height < 6)
+                return;
+        /* Top left */
+        pixels[3] = 0;
+        pixels[7] = 0x80;
+        pixels[11] = 0xC0;
+        pixels[rowstride + 3] = 0x80;
+        pixels[rowstride * 2 + 3] = 0xC0;
+
+        /* Top right */
+        pixels[width * 4 - 1] = 0;
+        pixels[width * 4 - 5] = 0x80;
+        pixels[width * 4 - 9] = 0xC0;
+        pixels[rowstride + (width * 4) - 1] = 0x80;
+        pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
+
+        /* Bottom left */
+        pixels[(height - 1) * rowstride + 3] = 0;
+        pixels[(height - 1) * rowstride + 7] = 0x80;
+        pixels[(height - 1) * rowstride + 11] = 0xC0;
+        pixels[(height - 2) * rowstride + 3] = 0x80;
+        pixels[(height - 3) * rowstride + 3] = 0xC0;
+
+        /* Bottom right */
+        pixels[height * rowstride - 1] = 0;
+        pixels[(height - 1) * rowstride - 1] = 0x80;
+        pixels[(height - 2) * rowstride - 1] = 0xC0;
+        pixels[height * rowstride - 5] = 0x80;
+        pixels[height * rowstride - 9] = 0xC0;
+}
+
+const char *pidgin_get_dim_grey_string(GtkWidget *widget) {
+	static char dim_grey_string[8] = "";
+	GtkStyle *style;
+
+	if (!widget)
+		return "dim grey";
+
+ 	style = gtk_widget_get_style(widget);
+	if (!style)
+		return "dim grey";
+	
+	snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
+	style->text_aa[GTK_STATE_NORMAL].red >> 8,
+	style->text_aa[GTK_STATE_NORMAL].green >> 8,
+	style->text_aa[GTK_STATE_NORMAL].blue >> 8);
+	return dim_grey_string;
+}
+
 #if !GTK_CHECK_VERSION(2,2,0)
 GtkTreePath *
 gtk_tree_path_new_from_indices (gint first_index, ...)
--- a/pidgin/gtkutils.h	Wed Jun 20 04:56:08 2007 +0000
+++ b/pidgin/gtkutils.h	Thu Jun 21 06:04:16 2007 +0000
@@ -565,6 +565,22 @@
  */
 gboolean pidgin_gdk_pixbuf_is_opaque(GdkPixbuf *pixbuf);
 
+/**
+ * Rounds the corners of a 32x32 GdkPixbuf in place
+ *
+ * @param pixbuf  The buddy icon to transform
+ */
+void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf);
+
+/**
+ * Returns an HTML-style color string for use as a dim grey
+ * string
+ *
+ * @param widget  The widget to return dim grey for
+ * @return The dim grey string
+ */
+const char *pidgin_get_dim_grey_string(GtkWidget *widget);
+
 #if !GTK_CHECK_VERSION(2,2,0)
 /**
  * This is copied from Gtk to support Gtk 2.0