changeset 18469:436d3c4c9930

merge of '3f89d563ddd1dda17f6a4f733ebe660614130ef4' and '6925b187cb53cde1fb2cbac2cca954ab9193702e'
author Mark Doliner <mark@kingant.net>
date Tue, 10 Jul 2007 05:42:51 +0000
parents 8c16685b0fef (diff) 3f964a7e27e2 (current diff)
children 39af19fa3351
files
diffstat 49 files changed, 820 insertions(+), 289 deletions(-) [+]
line wrap: on
line diff
--- a/.mtn-ignore	Thu Jul 05 08:06:08 2007 +0000
+++ b/.mtn-ignore	Tue Jul 10 05:42:51 2007 +0000
@@ -9,7 +9,7 @@
 .*\.dll$
 .*\.exe$
 intltool-.*
-Doxyfile$
+Doxyfile(\.mingw)?$
 aclocal.m4
 compile
 config.cache
--- a/ChangeLog	Thu Jul 05 08:06:08 2007 +0000
+++ b/ChangeLog	Tue Jul 10 05:42:51 2007 +0000
@@ -30,6 +30,7 @@
 	* Some improvements for tab-completion, tooltip and the password entries
 	* Some bugs regarding search results fixed
 	* A new DBus-script to create a docklet for finch
+	* Support for showing empty groups in the buddy list (Eric Polino)
 
 version 2.0.2 (06/14/2007):
 	Pidgin:
--- a/Makefile.mingw	Thu Jul 05 08:06:08 2007 +0000
+++ b/Makefile.mingw	Tue Jul 10 05:42:51 2007 +0000
@@ -56,7 +56,7 @@
 #build an expression for `find` to use to ignore the above files
 EXTERNAL_DLLS_FIND_EXP = $(patsubst %,-o -name %,$(EXTERNAL_DLLS))
 
-.PHONY: all install installer installer_nogtk installer_debug installers clean uninstall create_release_install_dir
+.PHONY: all docs install installer installer_nogtk installer_debug installers clean uninstall create_release_install_dir
 
 all: $(PIDGIN_CONFIG_H)
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE)
@@ -88,11 +88,19 @@
 
 installers: installer installer_nogtk installer_debug
 
+Doxyfile.mingw: Doxyfile.in
+	sed -e "s/@PACKAGE@/pidgin/" -e "s/@VERSION@/$(PIDGIN_VERSION)/" -e "s/@top_srcdir@/$(PIDGIN_TREE_TOP)/g" -e "s/@enable_dot@/NO/" Doxyfile.in > Doxyfile.mingw
+
+docs: Doxyfile.mingw
+	@echo "Running doxygen..."
+	@doxygen Doxyfile.mingw
+
 clean:
 	$(MAKE) -C $(PURPLE_PO_TOP) -f $(MINGW_MAKEFILE) clean
 	$(MAKE) -C $(PIDGIN_TOP) -f $(MINGW_MAKEFILE) clean
 	$(MAKE) -C $(PURPLE_TOP) -f $(MINGW_MAKEFILE) clean
 	rm -f $(PIDGIN_CONFIG_H) ./VERSION pidgin*.exe
+	rm -rf doc/html Doxyfile.mingw
 
 uninstall:
 	rm -rf $(PURPLE_INSTALL_PERLMOD_DIR) $(PIDGIN_INSTALL_PLUGINS_DIR) $(PURPLE_INSTALL_PO_DIR) $(PIDGIN_INSTALL_DIR) $(PIDGIN_INSTALL_DIR).release
--- a/finch/finch.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/finch.c	Tue Jul 10 05:42:51 2007 +0000
@@ -55,17 +55,36 @@
 	purple_debug_set_ui_ops(finch_debug_get_ui_ops());
 }
 
+/* XXX: this "leaks" a hashtable on shutdown.  I'll let
+ * the finch guys decide if they want to go through the trouble
+ * of properly freeing it, since their quit function doesn't
+ * live in this file */
+
+static GHashTable *ui_info = NULL;
+
+static GHashTable *finch_ui_get_info()
+{
+	if(NULL == ui_info) {
+		ui_info = g_hash_table_new(g_str_hash, g_str_equal);
+
+		g_hash_table_insert(ui_info, "name", (char*)_("Finch"));
+		g_hash_table_insert(ui_info, "version", VERSION);
+	}
+
+	return ui_info;
+}
+
 static PurpleCoreUiOps core_ops =
 {
 	finch_prefs_init,
 	debug_init,
 	gnt_ui_init,
 	gnt_ui_uninit,
+	finch_ui_get_info,
 
 	/* padding */
 	NULL,
 	NULL,
-	NULL,
 	NULL
 };
 
--- a/finch/gntblist.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/gntblist.c	Tue Jul 10 05:42:51 2007 +0000
@@ -195,8 +195,8 @@
 			node_update(list, (PurpleBlistNode*)contact);
 	} else if (!PURPLE_BLIST_NODE_IS_GROUP(node)) {
 		PurpleGroup *group = (PurpleGroup*)node->parent;
-		if ((!purple_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)) ||
-				group->currentsize < 1)
+		if ((group->currentsize < 1 && !purple_prefs_get_bool(PREF_ROOT "/emptygroups")) ||
+				(!purple_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)))
 			node_remove(list, node->parent);
 		for (node = node->child; node; node = node->next)
 			node->ui_data = NULL;
@@ -253,8 +253,9 @@
 		}
 	} else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
 		PurpleGroup *group = (PurpleGroup*)node;
-		if ((!purple_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)) ||
-				group->currentsize < 1)
+		if (!purple_prefs_get_bool(PREF_ROOT "/emptygroups") &&
+				((!purple_prefs_get_bool(PREF_ROOT "/showoffline") && !is_group_online(group)) ||
+				 group->currentsize < 1))
 			node_remove(list, node);
 		else
 			add_node(node, list->ui_data);
@@ -507,21 +508,24 @@
 		gboolean ascii = gnt_ascii_only();
 		
 		presence = purple_buddy_get_presence(buddy);
-		now = purple_presence_get_active_status(presence);
+		if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE))
+			strncpy(status, ascii ? ":" : "☎", sizeof(status) - 1);
+		else {
+			now = purple_presence_get_active_status(presence);
 
-		prim = purple_status_type_get_primitive(purple_status_get_type(now));
+			prim = purple_status_type_get_primitive(purple_status_get_type(now));
 
-		switch(prim)
-		{
-			case PURPLE_STATUS_OFFLINE:
-				strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
-				break;
-			case PURPLE_STATUS_AVAILABLE:
-				strncpy(status, ascii ? "o" : "◯", sizeof(status) - 1);
-				break;
-			default:
-				strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
-				break;
+			switch(prim) {
+				case PURPLE_STATUS_OFFLINE:
+					strncpy(status, ascii ? "x" : "⊗", sizeof(status) - 1);
+					break;
+				case PURPLE_STATUS_AVAILABLE:
+					strncpy(status, ascii ? "o" : "◯", sizeof(status) - 1);
+					break;
+				default:
+					strncpy(status, ascii ? "." : "⊖", sizeof(status) - 1);
+					break;
+			}
 		}
 		name = purple_buddy_get_alias(buddy);
 	}
@@ -1269,12 +1273,14 @@
 	PurplePluginProtocolInfo *prpl_info;
 	PurpleAccount *account;
 	PurpleNotifyUserInfo *user_info;
+	PurplePresence *presence;
 	const char *alias = purple_buddy_get_alias(buddy);
 	char *tmp, *strip;
 
 	user_info = purple_notify_user_info_new();
 
 	account = purple_buddy_get_account(buddy);
+	presence = purple_buddy_get_presence(buddy);
 
 	if (!full || g_utf8_collate(purple_buddy_get_name(buddy), alias))
 		purple_notify_user_info_add_pair(user_info, _("Nickname"), alias);
@@ -1308,6 +1314,10 @@
 
 	strip = purple_markup_strip_html(tmp);
 	g_string_append(str, strip);
+
+	if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_MOBILE))
+		g_string_append(str, _("On Mobile"));
+
 	g_free(strip);
 	g_free(tmp);
 }
@@ -1717,9 +1727,12 @@
 	purple_prefs_add_int(PREF_ROOT "/position/y", 0);
 	purple_prefs_add_bool(PREF_ROOT "/idletime", TRUE);
 	purple_prefs_add_bool(PREF_ROOT "/showoffline", FALSE);
+	purple_prefs_add_bool(PREF_ROOT "/emptygroups", FALSE);
 	purple_prefs_add_string(PREF_ROOT "/sort_type", "text");
 
 	purple_prefs_connect_callback(finch_blist_get_handle(),
+			PREF_ROOT "/emptygroups", redraw_blist, NULL);
+	purple_prefs_connect_callback(finch_blist_get_handle(),
 			PREF_ROOT "/showoffline", redraw_blist, NULL);
 	purple_prefs_connect_callback(finch_blist_get_handle(),
 			PREF_ROOT "/sort_type", redraw_blist, NULL);
@@ -2127,10 +2140,9 @@
 	}
 }
 
-static void show_offline_cb(GntMenuItem *item, gpointer n)
+static void toggle_pref_cb(GntMenuItem *item, gpointer n)
 {
-	purple_prefs_set_bool(PREF_ROOT "/showoffline",
-		!purple_prefs_get_bool(PREF_ROOT "/showoffline"));
+	purple_prefs_set_bool(n, !purple_prefs_get_bool(n));
 }
 
 static void sort_blist_change_cb(GntMenuItem *item, gpointer n)
@@ -2211,11 +2223,17 @@
 	gnt_menu_add_item(GNT_MENU(sub), item);
 	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), send_im_select, NULL);
 
+	item = gnt_menuitem_check_new(_("Show empty groups"));
+	gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
+				purple_prefs_get_bool(PREF_ROOT "/emptygroups"));
+	gnt_menu_add_item(GNT_MENU(sub), item);
+	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/emptygroups");
+	
 	item = gnt_menuitem_check_new(_("Show offline buddies"));
 	gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item),
 				purple_prefs_get_bool(PREF_ROOT "/showoffline"));
 	gnt_menu_add_item(GNT_MENU(sub), item);
-	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), show_offline_cb, NULL);
+	gnt_menuitem_set_callback(GNT_MENU_ITEM(item), toggle_pref_cb, PREF_ROOT "/showoffline");
 
 	item = gnt_menuitem_new(_("Sort by status"));
 	gnt_menu_add_item(GNT_MENU(sub), item);
--- a/finch/libgnt/gntcombobox.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntcombobox.c	Tue Jul 10 05:42:51 2007 +0000
@@ -107,7 +107,7 @@
 		GntWidget *dd = GNT_COMBO_BOX(widget)->dropdown;
 		gnt_widget_size_request(dd);
 		widget->priv.height = 3;   /* For now, a combobox will have border */
-		widget->priv.width = MAX(10, dd->priv.width + 4);
+		widget->priv.width = MAX(10, dd->priv.width + 2);
 	}
 }
 
--- a/finch/libgnt/gntfilesel.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntfilesel.c	Tue Jul 10 05:42:51 2007 +0000
@@ -587,7 +587,7 @@
 					 G_STRUCT_OFFSET(GntFileSelClass, file_selected),
 					 NULL, NULL,
 					 gnt_closure_marshal_VOID__STRING_STRING,
-					 G_TYPE_NONE, 0);
+					 G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
 
 	gnt_bindable_class_register_action(bindable, "toggle-tag", toggle_tag_selection, "t", NULL);
 	gnt_bindable_class_register_action(bindable, "clear-tags", clear_tags, "c", NULL);
@@ -634,6 +634,16 @@
 	return type;
 }
 
+static void
+select_activated_cb(GntWidget *button, GntFileSel *sel)
+{
+	char *path = gnt_file_sel_get_selected_file(sel);
+	char *file = g_path_get_basename(path);
+	g_signal_emit(sel, signals[SIG_FILE_SELECTED], 0, path, file);
+	g_free(file);
+	g_free(path);
+}
+
 GntWidget *gnt_file_sel_new(void)
 {
 	GntWidget *widget = g_object_new(GNT_TYPE_FILE_SEL, NULL);
@@ -653,6 +663,7 @@
 	gnt_tree_set_show_title(GNT_TREE(sel->files), TRUE);
 	gnt_tree_set_col_width(GNT_TREE(sel->files), 0, 25);
 	gnt_tree_set_col_width(GNT_TREE(sel->files), 1, 10);
+	gnt_tree_set_column_is_right_aligned(GNT_TREE(sel->files), 1, TRUE);
 	g_signal_connect(G_OBJECT(sel->files), "selection_changed", G_CALLBACK(file_sel_changed), sel);
 
 	/* The location entry */
@@ -662,6 +673,8 @@
 	sel->cancel = gnt_button_new("Cancel");
 	sel->select = gnt_button_new("Select");
 
+	g_signal_connect(G_OBJECT(sel->select), "activate", G_CALLBACK(select_activated_cb), sel);
+
 	return widget;
 }
 
--- a/finch/libgnt/gntmain.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntmain.c	Tue Jul 10 05:42:51 2007 +0000
@@ -352,6 +352,14 @@
 	static GntWidget *win = NULL;
 	GntWidget *bbox, *button;
 
+	if (wm->menu) {
+		do {
+			gnt_widget_hide(GNT_WIDGET(wm->menu));
+			if (wm->menu)
+				wm->menu = wm->menu->parentmenu;
+		} while (wm->menu);
+	}
+
 	if (win)
 		goto raise;
 
--- a/finch/libgnt/gntmenu.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntmenu.c	Tue Jul 10 05:42:51 2007 +0000
@@ -23,6 +23,7 @@
 #include "gntmenu.h"
 #include "gntmenuitemcheck.h"
 
+#include <ctype.h>
 #include <string.h>
 
 enum
@@ -30,11 +31,20 @@
 	SIGS = 1,
 };
 
+enum
+{
+	ITEM_TEXT = 0,
+	ITEM_TRIGGER,
+	ITEM_SUBMENU,
+	NUM_COLUMNS
+};
+
 static GntTreeClass *parent_class = NULL;
 
 static void (*org_draw)(GntWidget *wid);
 static void (*org_destroy)(GntWidget *wid);
 static void (*org_map)(GntWidget *wid);
+static void (*org_size_request)(GntWidget *wid);
 static gboolean (*org_key_pressed)(GntWidget *w, const char *t);
 
 static void
@@ -75,21 +85,26 @@
 		widget->priv.height = 1;
 		widget->priv.width = getmaxx(stdscr);
 	} else {
+		org_size_request(widget);
 		widget->priv.height = g_list_length(menu->list) + 2;
-		widget->priv.width = 25;  /* XXX: */
 	}
 }
 
 static void
 menu_tree_add(GntMenu *menu, GntMenuItem *item, GntMenuItem *parent)
 {
+	char trigger[4] = "\0 )\0";
+
+	if ((trigger[1] = gnt_menuitem_get_trigger(item)) && trigger[1] != ' ')
+		trigger[0] = '(';
+
 	if (GNT_IS_MENU_ITEM_CHECK(item)) {
 		gnt_tree_add_choice(GNT_TREE(menu), item,
-			gnt_tree_create_row(GNT_TREE(menu), item->text, " "), parent, NULL);
+			gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, " "), parent, NULL);
 		gnt_tree_set_choice(GNT_TREE(menu), item, gnt_menuitem_check_get_checked(GNT_MENU_ITEM_CHECK(item)));
 	} else
 		gnt_tree_add_row_last(GNT_TREE(menu), item,
-			gnt_tree_create_row(GNT_TREE(menu), item->text, item->submenu ? ">" : " "), parent);
+			gnt_tree_create_row(GNT_TREE(menu), item->text, trigger, item->submenu ? ">" : " "), parent);
 
 	if (0 && item->submenu) {
 		GntMenu *sub = GNT_MENU(item->submenu);
@@ -101,6 +116,45 @@
 	}
 }
 
+#define GET_VAL(ch)  ((ch >= '0' && ch <= '9') ? (ch - '0') : (ch >= 'a' && ch <= 'z') ? (10 + ch - 'a') : 36)
+
+static void
+assign_triggers(GntMenu *menu)
+{
+	GList *iter;
+	gboolean bools[37];
+
+	memset(bools, 0, sizeof(bools));
+	bools[36] = 1;
+
+	for (iter = menu->list; iter; iter = iter->next) {
+		GntMenuItem *item = iter->data;
+		char trigger = tolower(gnt_menuitem_get_trigger(item));
+		if (trigger == '\0' || trigger == ' ')
+			continue;
+		bools[(int)GET_VAL(trigger)] = 1;
+	}
+
+	for (iter = menu->list; iter; iter = iter->next) {
+		GntMenuItem *item = iter->data;
+		char trigger = gnt_menuitem_get_trigger(item);
+		const char *text = item->text;
+		if (trigger != '\0')
+			continue;
+		while (*text) {
+			char ch = tolower(*text++);
+			if (ch == ' ' || bools[(int)GET_VAL(ch)])
+				continue;
+			trigger = ch;
+			break;
+		}
+		if (trigger == 0)
+			trigger = item->text[0];
+		gnt_menuitem_set_trigger(item, trigger);
+		bools[(int)GET_VAL(trigger)] = 1;
+	}
+}
+
 static void
 gnt_menu_map(GntWidget *widget)
 {
@@ -112,6 +166,8 @@
 		/* Populate the tree */
 		GList *iter;
 		gnt_tree_remove_all(GNT_TREE(widget));
+		/* Try to assign some trigger for the items */
+		assign_triggers(menu);
 		for (iter = menu->list; iter; iter = iter->next) {
 			GntMenuItem *item = GNT_MENU_ITEM(iter->data);
 			menu_tree_add(menu, item, NULL);
@@ -149,6 +205,41 @@
 	}
 }
 
+static GList*
+find_item_with_trigger(GList *start, GList *end, char trigger)
+{
+	GList *iter;
+	for (iter = start; iter != (end ? end : NULL); iter = iter->next) {
+		if (gnt_menuitem_get_trigger(iter->data) == trigger)
+			return iter;
+	}
+	return NULL;
+}
+
+static gboolean
+check_for_trigger(GntMenu *menu, char trigger)
+{
+	/* check for a trigger key */
+	GList *iter;
+	GList *nth = g_list_find(menu->list, gnt_tree_get_selection_data(GNT_TREE(menu)));
+	GList *find = find_item_with_trigger(nth->next, NULL, trigger);
+	if (!find)
+		find = find_item_with_trigger(menu->list, nth->next, trigger);
+	if (!find)
+		return FALSE;
+	if (find != nth) {
+		gnt_tree_set_selected(GNT_TREE(menu), find->data);
+		iter = find_item_with_trigger(find->next, NULL, trigger);
+		if (iter != NULL && iter != find)
+			return TRUE;
+		iter = find_item_with_trigger(menu->list, nth, trigger);
+		if (iter != NULL && iter != find)
+			return TRUE;
+	}
+	gnt_widget_activate(GNT_WIDGET(menu));
+	return TRUE;
+}
+
 static gboolean
 gnt_menu_key_pressed(GntWidget *widget, const char *text)
 {
@@ -189,6 +280,10 @@
 			return TRUE;
 		}
 	} else {
+		if (text[1] == '\0') {
+			if (check_for_trigger(menu, text[0]))
+				return TRUE;
+		}
 		return org_key_pressed(widget, text);
 	}
 
@@ -260,6 +355,7 @@
 	org_map = wid_class->map;
 	org_draw = wid_class->draw;
 	org_key_pressed = wid_class->key_pressed;
+	org_size_request = wid_class->size_request;
 
 	wid_class->destroy = gnt_menu_destroy;
 	wid_class->draw = gnt_menu_draw;
@@ -327,9 +423,11 @@
 		widget->priv.y = 0;
 	} else {
 		GNT_TREE(widget)->show_separator = FALSE;
-		_gnt_tree_init_internals(GNT_TREE(widget), 2);
-		gnt_tree_set_col_width(GNT_TREE(widget), 1, 1);  /* The second column is to indicate that it has a submenu */
-		gnt_tree_set_column_resizable(GNT_TREE(widget), 1, FALSE);
+		_gnt_tree_init_internals(GNT_TREE(widget), NUM_COLUMNS);
+		gnt_tree_set_col_width(GNT_TREE(widget), ITEM_TRIGGER, 3);
+		gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_TRIGGER, FALSE);
+		gnt_tree_set_col_width(GNT_TREE(widget), ITEM_SUBMENU, 1);
+		gnt_tree_set_column_resizable(GNT_TREE(widget), ITEM_SUBMENU, FALSE);
 		GNT_WIDGET_UNSET_FLAGS(widget, GNT_WIDGET_NO_BORDER);
 	}
 
--- a/finch/libgnt/gntmenuitem.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntmenuitem.c	Tue Jul 10 05:42:51 2007 +0000
@@ -104,3 +104,13 @@
 	item->submenu = menu;
 }
 
+void gnt_menuitem_set_trigger(GntMenuItem *item, char trigger)
+{
+	item->priv.trigger = trigger;
+}
+
+char gnt_menuitem_get_trigger(GntMenuItem *item)
+{
+	return item->priv.trigger;
+}
+
--- a/finch/libgnt/gntmenuitem.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gntmenuitem.h	Tue Jul 10 05:42:51 2007 +0000
@@ -52,6 +52,7 @@
 	/* These will be used to determine the position of the submenu */
 	int x;
 	int y;
+	char trigger;
 };
 
 typedef void (*GntMenuItemCallback)(GntMenuItem *item, gpointer data);
@@ -114,6 +115,25 @@
  */
 void gnt_menuitem_set_submenu(GntMenuItem *item, GntMenu *menu);
 
+/**
+ * Set a trigger key for the item.
+ *
+ * @param item     The menuitem
+ * @param trigger  The key that will trigger the item when the parent manu is visible
+ */
+void gnt_menuitem_set_trigger(GntMenuItem *item, char trigger);
+
+/**
+ * Get the trigger key for a menuitem.
+ *
+ * @param item   The menuitem
+ *
+ * @return The trigger key for the menuitem.
+ *
+ * @see gnt_menuitem_set_trigger
+ */
+char gnt_menuitem_get_trigger(GntMenuItem *item);
+
 G_END_DECLS
 
 #endif /* GNT_MENUITEM_H */
--- a/finch/libgnt/gnttree.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gnttree.c	Tue Jul 10 05:42:51 2007 +0000
@@ -33,6 +33,7 @@
 
 #define COLUMN_INVISIBLE(tree, index)  (tree->columns[index].flags & GNT_TREE_COLUMN_INVISIBLE)
 #define BINARY_DATA(tree, index)       (tree->columns[index].flags & GNT_TREE_COLUMN_BINARY_DATA)
+#define RIGHT_ALIGNED(tree, index)       (tree->columns[index].flags & GNT_TREE_COLUMN_RIGHT_ALIGNED)
 
 enum
 {
@@ -86,13 +87,15 @@
 	int width;
 #define WIDTH(i) (tree->columns[i].width_ratio ? tree->columns[i].width_ratio : tree->columns[i].width)
 	gnt_widget_get_size(GNT_WIDGET(tree), &width, NULL);
+	if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER))
+		width -= 2;
 	for (i = 0, total = 0; i < tree->ncol ; i++) {
 		if (tree->columns[i].flags & GNT_TREE_COLUMN_INVISIBLE)
 			continue;
 		if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE)
-			width -= WIDTH(i);
+			width -= WIDTH(i) + 1;
 		else
-			total += WIDTH(i);
+			total += WIDTH(i) + 1;
 	}
 
 	if (total == 0)
@@ -283,10 +286,6 @@
 	GList *iter;
 	int i;
 	gboolean notfirst = FALSE;
-	int lastvisible = tree->ncol;
-
-	while (lastvisible && COLUMN_INVISIBLE(tree, lastvisible))
-		lastvisible--;
 
 	for (i = 0, iter = row->columns; i < tree->ncol && iter; i++, iter = iter->next)
 	{
@@ -308,10 +307,7 @@
 
 		len = gnt_util_onscreen_width(display, NULL);
 
-		if (i == lastvisible)
-			width = GNT_WIDGET(tree)->priv.width - gnt_util_onscreen_width(string->str, NULL);
-		else
-			width = tree->columns[i].width;
+		width = tree->columns[i].width;
 
 		if (i == 0)
 		{
@@ -339,8 +335,7 @@
 				g_string_append_printf(string, "%*s", fl, "");
 			}
 			len += fl;
-		}
-		else if (notfirst)
+		} else if (notfirst && tree->show_separator)
 			g_string_append_c(string, '|');
 		else
 			g_string_append_c(string, ' ');
@@ -351,6 +346,11 @@
 			len = width - 1;
 			cut = TRUE;
 		}
+
+		if (RIGHT_ALIGNED(tree, i) && len < tree->columns[i].width) {
+			g_string_append_printf(string, "%*s", width - len, "");
+		}
+
 		text = gnt_util_onscreen_width_to_pointer(display, len - fl, NULL);
 		string = g_string_append_len(string, display, text - display);
 		if (cut) { /* ellipsis */
@@ -361,7 +361,7 @@
 			len++;
 		}
 
-		if (len < tree->columns[i].width && iter->next)
+		if (!RIGHT_ALIGNED(tree, i) && len < tree->columns[i].width && iter->next)
 			g_string_append_printf(string, "%*s", width - len, "");
 	}
 	return g_string_free(string, FALSE);
@@ -598,9 +598,13 @@
 	{
 		GntTree *tree = GNT_TREE(widget);
 		int i, width = 0;
+		width = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER));
 		for (i = 0; i < tree->ncol; i++)
-			if (!COLUMN_INVISIBLE(tree, i))
-				width += tree->columns[i].width + 1;
+			if (!COLUMN_INVISIBLE(tree, i)) {
+				width = width + tree->columns[i].width;
+				if (tree->lastvisible != i)
+					width++;
+			}
 		widget->priv.width = width;
 	}
 }
@@ -1502,6 +1506,7 @@
 	tree->ncol = col;
 	tree->hash = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, free_tree_row);
 	tree->columns = g_new0(struct _GntTreeColInfo, col);
+	tree->lastvisible = col - 1;
 	while (col--)
 	{
 		tree->columns[col].width = 15;
@@ -1647,9 +1652,14 @@
 
 	twidth = 1 + 2 * (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_NO_BORDER));
 	for (i = 0; i < tree->ncol; i++) {
+		if (tree->columns[i].flags & GNT_TREE_COLUMN_FIXED_SIZE)
+			widths[i] = tree->columns[i].width;
 		gnt_tree_set_col_width(tree, i, widths[i]);
-		if (!COLUMN_INVISIBLE(tree, i))
-			twidth += widths[i] + (tree->show_separator ? 1 : 0) + 1;
+		if (!COLUMN_INVISIBLE(tree, i)) {
+			twidth = twidth + widths[i];
+			if (tree->lastvisible != i)
+				twidth += 1;
+		}
 	}
 	g_free(widths);
 
@@ -1676,6 +1686,18 @@
 {
 	g_return_if_fail(col < tree->ncol);
 	set_column_flag(tree, col, GNT_TREE_COLUMN_INVISIBLE, !vis);
+	if (vis) {
+		/* the column is visible */
+		if (tree->lastvisible < col)
+			tree->lastvisible = col;
+	} else {
+		if (tree->lastvisible == col)
+			while (tree->lastvisible) {
+				tree->lastvisible--;
+				if (!COLUMN_INVISIBLE(tree, tree->lastvisible))
+					break;
+			}
+	}
 }
 
 void gnt_tree_set_column_resizable(GntTree *tree, int col, gboolean res)
@@ -1690,6 +1712,12 @@
 	set_column_flag(tree, col, GNT_TREE_COLUMN_FIXED_SIZE, bin);
 }
 
+void gnt_tree_set_column_is_right_aligned(GntTree *tree, int col, gboolean right)
+{
+	g_return_if_fail(col < tree->ncol);
+	set_column_flag(tree, col, GNT_TREE_COLUMN_RIGHT_ALIGNED, right);
+}
+
 void gnt_tree_set_column_width_ratio(GntTree *tree, int cols[])
 {
 	int i;
--- a/finch/libgnt/gnttree.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/finch/libgnt/gnttree.h	Tue Jul 10 05:42:51 2007 +0000
@@ -51,6 +51,7 @@
 	GNT_TREE_COLUMN_INVISIBLE    = 1 << 0,
 	GNT_TREE_COLUMN_FIXED_SIZE   = 1 << 1,
 	GNT_TREE_COLUMN_BINARY_DATA  = 1 << 2,
+	GNT_TREE_COLUMN_RIGHT_ALIGNED = 1 << 3,
 } GntTreeColumnFlag;
 
 struct _GntTree
@@ -86,6 +87,7 @@
 	int search_timeout;
 
 	GCompareFunc compare;
+	int lastvisible;
 };
 
 struct _GntTreeClass
@@ -480,6 +482,15 @@
 void gnt_tree_set_column_is_binary(GntTree *tree, int col, gboolean bin);
 
 /**
+ * Set whether text in a column should be right-aligned.
+ *
+ * @param tree  The tree
+ * @param col   The index of the column
+ * @param right @c TRUE if the text in the column should be right aligned
+ */
+void gnt_tree_set_column_is_right_aligned(GntTree *tree, int col, gboolean right);
+
+/**
  * Set column widths to use when calculating column widths after a tree
  * is resized.
  *
--- a/libpurple/account.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/account.c	Tue Jul 10 05:42:51 2007 +0000
@@ -2183,6 +2183,7 @@
 purple_accounts_delete(PurpleAccount *account)
 {
 	PurpleBlistNode *gnode, *cnode, *bnode;
+	GList *iter;
 
 	g_return_if_fail(account != NULL);
 
@@ -2231,6 +2232,14 @@
 		}
 	}
 
+	/* Remove any open conversation for this account */
+	for (iter = purple_get_conversations(); iter; ) {
+		PurpleConversation *conv = iter->data;
+		iter = iter->next;
+		if (purple_conversation_get_account(conv) == account)
+			purple_conversation_destroy(conv);
+	}
+
 	/* Remove this account's pounces */
 	purple_pounce_destroy_all_by_account(account);
 
--- a/libpurple/blist.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/blist.h	Tue Jul 10 05:42:51 2007 +0000
@@ -635,7 +635,7 @@
 /**
  * Finds a group by name
  *
- * @param name    The groups name
+ * @param name    The group's name
  * @return        The group or NULL if the group does not exist
  */
 PurpleGroup *purple_find_group(const char *name);
--- a/libpurple/core.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/core.c	Tue Jul 10 05:42:51 2007 +0000
@@ -764,3 +764,12 @@
 	g_free(status_file);
 	return TRUE;
 }
+
+GHashTable* purple_core_get_ui_info() {
+	PurpleCoreUiOps *ops = purple_core_get_ui_ops();
+
+	if(NULL == ops || NULL == ops->get_ui_info)
+		return NULL;
+
+	return ops->get_ui_info();
+}
--- a/libpurple/core.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/core.h	Tue Jul 10 05:42:51 2007 +0000
@@ -34,11 +34,11 @@
 	void (*debug_ui_init)(void); /* Unfortunate necessity. */
 	void (*ui_init)(void);
 	void (*quit)(void);
+	GHashTable* (*get_ui_info)(void);
 
 	void (*_purple_reserved1)(void);
 	void (*_purple_reserved2)(void);
 	void (*_purple_reserved3)(void);
-	void (*_purple_reserved4)(void);
 } PurpleCoreUiOps;
 
 #ifdef __cplusplus
@@ -133,6 +133,17 @@
  */
 gboolean purple_core_ensure_single_instance(void);
 
+/**
+ * Returns a hashtable containing various information about the UI
+ *
+ * @return A GHashTable with strings for keys and values.  This
+ * hash table must not be freed.
+ *
+ * @since 2.1.0
+ *
+ */
+GHashTable* purple_core_get_ui_info(void);
+
 #ifdef __cplusplus
 }
 #endif
--- a/libpurple/plugins/perl/common/Makefile.mingw	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/plugins/perl/common/Makefile.mingw	Tue Jul 10 05:42:51 2007 +0000
@@ -20,6 +20,7 @@
 INCLUDE_PATHS +=		-I. \
 			-I$(PIDGIN_TREE_TOP) \
 			-I$(PURPLE_TOP) \
+			-I$(PURPLE_TOP)/win32 \
 			-I$(GTK_TOP)/include \
 			-I$(GTK_TOP)/include/glib-2.0 \
 			-I$(GTK_TOP)/lib/glib-2.0/include \
--- a/libpurple/plugins/perl/perl-common.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/plugins/perl/perl-common.h	Tue Jul 10 05:42:51 2007 +0000
@@ -11,7 +11,14 @@
 
 /* XXX: perl defines it's own _ but I think it's safe to undef it */
 #undef _
+/* Dirty hack to prevent the win32 libc compat stuff from interfering with the Perl internal stuff */
+#ifdef _WIN32
+#define _WIN32DEP_H_
+#endif
 #include "internal.h"
+#ifdef _WIN32
+#undef _WIN32DEP_H_
+#endif
 #include "plugin.h"
 #include "value.h"
 
--- a/libpurple/protocols/gg/gg.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/protocols/gg/gg.c	Tue Jul 10 05:42:51 2007 +0000
@@ -1074,9 +1074,7 @@
 		}
 	}
 
-	val = ggp_buddy_get_name(gc, ggp_str_to_uin(who));
-	purple_notify_userinfo(gc, val, user_info, ggp_sr_close_cb, form);
-	g_free(val);
+	purple_notify_userinfo(gc, who, user_info, ggp_sr_close_cb, form);
 	g_free(who);
 	purple_notify_user_info_destroy(user_info);
 }
--- a/libpurple/protocols/jabber/iq.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/protocols/jabber/iq.c	Tue Jul 10 05:42:51 2007 +0000
@@ -19,6 +19,7 @@
  *
  */
 #include "internal.h"
+#include "core.h"
 #include "debug.h"
 #include "prefs.h"
 #include "util.h"
@@ -250,6 +251,8 @@
 	type = xmlnode_get_attrib(packet, "type");
 
 	if(type && !strcmp(type, "get")) {
+		GHashTable *ui_info;
+		const char *ui_name = NULL, *ui_version = NULL;
 
 		if(!purple_prefs_get_bool("/plugins/prpl/jabber/hide_os")) {
 			struct utsname osinfo;
@@ -268,9 +271,23 @@
 
 		query = xmlnode_get_child(iq->node, "query");
 
-		/* TODO: ask the core for the version of libpurple and the name and version of the UI */
-		xmlnode_insert_data(xmlnode_new_child(query, "name"), "libpurple", -1);
-		xmlnode_insert_data(xmlnode_new_child(query, "version"), VERSION, -1);
+		ui_info = purple_core_get_ui_info();
+
+		if(NULL != ui_info) {
+			ui_name = g_hash_table_lookup(ui_info, "name");
+			ui_version = g_hash_table_lookup(ui_info, "version");
+		}
+
+		if(NULL != ui_name && NULL != ui_version) {
+			char *version_complete = g_strdup_printf("%s (libpurple " VERSION ")", ui_version);
+			xmlnode_insert_data(xmlnode_new_child(query, "name"), ui_name, -1);
+			xmlnode_insert_data(xmlnode_new_child(query, "version"), version_complete, -1);
+			g_free(version_complete);
+		} else {
+			xmlnode_insert_data(xmlnode_new_child(query, "name"), "libpurple", -1);
+			xmlnode_insert_data(xmlnode_new_child(query, "version"), VERSION, -1);
+		}
+
 		if(os) {
 			xmlnode_insert_data(xmlnode_new_child(query, "os"), os, -1);
 			g_free(os);
--- a/libpurple/protocols/yahoo/Makefile.am	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/protocols/yahoo/Makefile.am	Tue Jul 10 05:42:51 2007 +0000
@@ -9,6 +9,8 @@
 	yahoo.h \
 	yahoochat.h \
 	yahoochat.c \
+	yahoo_aliases.c \
+	yahoo_aliases.h \
 	yahoo_auth.c \
 	yahoo_auth.h \
 	yahoo_crypt.h \
--- a/libpurple/win32/win32dep.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/libpurple/win32/win32dep.c	Tue Jul 10 05:42:51 2007 +0000
@@ -43,8 +43,6 @@
 /*
  *  DEFINES & MACROS
  */
-#define _(x) gettext(x)
-
 #define WIN32_PROXY_REGKEY "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
 
 /* For shfolder.dll */
--- a/pidgin/gtkconv.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkconv.c	Tue Jul 10 05:42:51 2007 +0000
@@ -184,7 +184,6 @@
 static void pidgin_conv_update_fields(PurpleConversation *conv, PidginConvFields fields);
 static void focus_out_from_menubar(GtkWidget *wid, PidginWindow *win);
 static void pidgin_conv_tab_pack(PidginWindow *win, PidginConversation *gtkconv);
-static gboolean infopane_release_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *conv);
 static gboolean infopane_press_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *conv);
 
 static GdkColor *get_nick_color(PidginConversation *gtkconv, const char *name) {
@@ -4410,8 +4409,6 @@
 	                      GDK_BUTTON1_MOTION_MASK | GDK_LEAVE_NOTIFY_MASK);
 	g_signal_connect(G_OBJECT(event_box), "button_press_event",
 	                 G_CALLBACK(infopane_press_cb), gtkconv);
-	g_signal_connect(G_OBJECT(event_box), "button_release_event",
-	                 G_CALLBACK(infopane_release_cb), gtkconv);
 
 
 	gtkconv->infopane = gtk_cell_view_new();
@@ -4857,8 +4854,14 @@
 
 	gtkconv->convs = g_list_remove(gtkconv->convs, conv);
 	/* Don't destroy ourselves until all our convos are gone */
-	if (gtkconv->convs)
+	if (gtkconv->convs) {
+		/* Make sure the destroyed conversation is not the active one */
+		if (gtkconv->active_conv == conv) {
+			gtkconv->active_conv = gtkconv->convs->data;
+			purple_conversation_update(gtkconv->active_conv, PURPLE_CONV_UPDATE_FEATURES);
+		}
 		return;
+	}
 
 	pidgin_conv_window_remove_gtkconv(gtkconv->win, gtkconv);
 
@@ -7737,12 +7740,6 @@
 }
 
 static gboolean
-infopane_release_cb(GtkWidget *widget, GdkEventButton *e, PidginConversation *gtkconv)
-{
-	return FALSE;
-}
-
-static gboolean
 notebook_release_cb(GtkWidget *widget, GdkEventButton *e, PidginWindow *win)
 {
 	PidginWindow *dest_win;
@@ -8327,6 +8324,9 @@
 #ifdef _WIN32
 	g_signal_connect(G_OBJECT(win->window), "show",
 	                 G_CALLBACK(winpidgin_ensure_onscreen), win->window);
+
+	if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/win32/minimize_new_convs"))
+		gtk_window_iconify(GTK_WINDOW(win->window));
 #endif
 
 	return win;
--- a/pidgin/gtkimhtml.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkimhtml.c	Tue Jul 10 05:42:51 2007 +0000
@@ -28,8 +28,8 @@
 #include <config.h>
 #endif
 
+#include "internal.h"
 #include "pidgin.h"
-#include "internal.h"
 
 #include "debug.h"
 #include "util.h"
@@ -216,7 +216,6 @@
 clipboard_html_to_win32(char *html) {
 	int length;
 	GString *clipboard;
-	gchar *tmp;
 
 	if (html == NULL)
 		return NULL;
@@ -224,13 +223,9 @@
 	length = strlen(html);
 	clipboard = g_string_new ("Version:1.0\r\n");
 	g_string_append(clipboard, "StartHTML:0000000105\r\n");
-	tmp = g_strdup_printf("EndHTML:%010d\r\n", 147 + length);
-	g_string_append(clipboard, tmp);
-	g_free(tmp);
+	g_string_append_printf(clipboard, "EndHTML:%010d\r\n", 147 + length);
 	g_string_append(clipboard, "StartFragment:0000000127\r\n");
-	tmp = g_strdup_printf("EndFragment:%010d\r\n", 127 + length);
-	g_string_append(clipboard, tmp);
-	g_free(tmp);
+	g_string_append_printf(clipboard, "EndFragment:%010d\r\n", 127 + length);
 	g_string_append(clipboard, "<!--StartFragment-->\r\n");
 	g_string_append(clipboard, html);
 	g_string_append(clipboard, "\r\n<!--EndFragment-->");
@@ -909,7 +904,7 @@
 		gtk_selection_data_set(selection_data, gdk_atom_intern("text/html", FALSE), 16, (const guchar *)selection, len);
 		g_string_free(str, TRUE);
 #else
-		selection = clipboard_html_to_win32(imhtml->clipboard_html_string);
+		selection = clipboard_html_to_win32(html_clipboard);
 		gtk_selection_data_set(selection_data, gdk_atom_intern("HTML Format", FALSE), 8, (const guchar *)selection, strlen(selection));
 #endif
 		g_free(selection);
@@ -957,8 +952,8 @@
 						 (GtkClipboardGetFunc)gtk_imhtml_clipboard_get,
 						 (GtkClipboardClearFunc)gtk_imhtml_clipboard_clear, G_OBJECT(imhtml));
 
-		g_free(imhtml->clipboard_html_string);
-		g_free(imhtml->clipboard_text_string);
+		g_free(html_clipboard);
+		g_free(text_clipboard);
 
 		imhtml->clipboard_html_string = gtk_imhtml_get_markup_range(imhtml, &start, &end);
 		imhtml->clipboard_text_string = gtk_imhtml_get_text(imhtml, &start, &end);
@@ -982,8 +977,8 @@
 						 (GtkClipboardGetFunc)gtk_imhtml_clipboard_get,
 						 (GtkClipboardClearFunc)gtk_imhtml_clipboard_clear, G_OBJECT(imhtml));
 
-		g_free(imhtml->clipboard_html_string);
-		g_free(imhtml->clipboard_text_string);
+		g_free(html_clipboard);
+		g_free(text_clipboard);
 
 		imhtml->clipboard_html_string = gtk_imhtml_get_markup_range(imhtml, &start, &end);
 		imhtml->clipboard_text_string = gtk_imhtml_get_text(imhtml, &start, &end);
--- a/pidgin/gtkmain.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkmain.c	Tue Jul 10 05:42:51 2007 +0000
@@ -316,6 +316,8 @@
 	pidgin_docklet_init();
 }
 
+static GHashTable *ui_info = NULL;
+
 static void
 pidgin_quit(void)
 {
@@ -337,17 +339,32 @@
 	pidgin_xfers_uninit();
 	pidgin_debug_uninit();
 
+	if(NULL != ui_info)
+		g_hash_table_destroy(ui_info);
+
 	/* and end it all... */
 	gtk_main_quit();
 }
 
+static GHashTable *pidgin_ui_get_info()
+{
+	if(NULL == ui_info) {
+		ui_info = g_hash_table_new(g_str_hash, g_str_equal);
+
+		g_hash_table_insert(ui_info, "name", (char*)PIDGIN_NAME);
+		g_hash_table_insert(ui_info, "version", VERSION);
+	}
+
+	return ui_info;
+}
+
 static PurpleCoreUiOps core_ops =
 {
 	pidgin_prefs_init,
 	debug_init,
 	pidgin_ui_init,
 	pidgin_quit,
-	NULL,
+	pidgin_ui_get_info,
 	NULL,
 	NULL,
 	NULL
--- a/pidgin/gtkprefs.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkprefs.c	Tue Jul 10 05:42:51 2007 +0000
@@ -1014,6 +1014,8 @@
 
 #ifdef _WIN32
 	pidgin_prefs_checkbox(_("F_lash window when IMs are received"), PIDGIN_PREFS_ROOT "/win32/blink_im", vbox);
+
+	pidgin_prefs_checkbox(_("Minimi_ze new conversation windows"), PIDGIN_PREFS_ROOT "/win32/minimize_new_convs", vbox);
 #endif
 
 #if GTK_CHECK_VERSION(2,4,0)
--- a/pidgin/gtkutils.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkutils.c	Tue Jul 10 05:42:51 2007 +0000
@@ -676,6 +676,12 @@
 	return aop_option_menu_new(create_protocols_menu(id), cb, user_data);
 }
 
+const char *
+pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu)
+{
+	return (const char *)aop_option_menu_get_selected(optmenu, NULL);
+}
+
 PurpleAccount *
 pidgin_account_option_menu_get_selected(GtkWidget *optmenu)
 {
--- a/pidgin/gtkutils.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/gtkutils.h	Tue Jul 10 05:42:51 2007 +0000
@@ -236,6 +236,15 @@
 											 gpointer user_data);
 
 /**
+ * Gets the currently selected protocol from a protocol drop down box.
+ *
+ * @param optmenu The drop-down option menu created by
+ *        pidgin_account_option_menu_new.
+ * @return Returns the protocol ID that is currently selected.
+ */
+const char *pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu);
+
+/**
  * Creates a drop-down option menu filled with accounts.
  *
  * @param default_account The account to select by default.
@@ -255,7 +264,7 @@
 /**
  * Gets the currently selected account from an account drop down box.
  *
- * @param optmenu The GtkOptionMenu created by
+ * @param optmenu The drop-down option menu created by
  *        pidgin_account_option_menu_new.
  * @return Returns the PurpleAccount that is currently selected.
  */
Binary file pidgin/pixmaps/edit.png has changed
Binary file pidgin/pixmaps/emblems/16/aol-client.png has changed
Binary file pidgin/pixmaps/emblems/16/blocked.png has changed
--- a/pidgin/pixmaps/emblems/16/scalable/aol-client.svg	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/scalable/aol-client.svg	Tue Jul 10 05:42:51 2007 +0000
@@ -6,16 +6,16 @@
    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:sodipodi="http://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    width="16px"
    height="16px"
    id="svg1307"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/emblems"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/hbons/Desktop/Pidgin/2.1.0/emblems/16/scalable"
    sodipodi:docname="aol-client.svg"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/emblems/aol-client.png"
+   inkscape:export-filename="/home/hbons/Desktop/aol-client.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90">
   <defs
@@ -39,9 +39,9 @@
      inkscape:guide-bbox="true"
      inkscape:grid-points="true"
      inkscape:window-width="1268"
-     inkscape:window-height="971"
+     inkscape:window-height="841"
      inkscape:window-x="6"
-     inkscape:window-y="21" />
+     inkscape:window-y="0" />
   <metadata
      id="metadata1312">
     <rdf:RDF>
@@ -58,24 +58,8 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <path
-       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 2,1 L 14,8 L 2,15 L 2,1 z "
-       id="path2258"
-       sodipodi:nodetypes="cccc" />
-    <path
        style="fill:#204a87;fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 2,1 L 14,8 L 2,15 L 2,1 z "
-       id="rect2229"
-       sodipodi:nodetypes="cccc" />
-    <path
-       sodipodi:type="arc"
-       style="opacity:1;fill:#204a87;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.16577935;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path2227"
-       sodipodi:cx="6.9882684"
-       sodipodi:cy="8.1797953"
-       sodipodi:rx="3.6050591"
-       sodipodi:ry="3.4386716"
-       d="M 10.593328 8.1797953 A 3.6050591 3.4386716 0 1 1  3.3832092,8.1797953 A 3.6050591 3.4386716 0 1 1  10.593328 8.1797953 z"
-       transform="matrix(0.951853,0,0,0.997732,-0.651436,-0.160895)" />
+       d="M 2 1 L 2 15 L 14 8 L 2 1 z M 6 4 C 8.1805207 4 10 5.7762679 10 8 C 10 10.223732 8.1805205 12 6 12 C 3.8194795 11.999999 2.0312501 10.223732 2.03125 8 C 2.03125 5.7762679 3.8194791 4.0000001 6 4 z M 6 5.125 C 4.3921597 5.125 3.1249999 6.4360487 3.125 8 C 3.125 9.5639514 4.3921593 10.84375 6 10.84375 C 7.6078403 10.84375 8.875 9.5639514 8.875 8 C 8.875 6.4360487 7.6078401 5.1249999 6 5.125 z "
+       id="rect2229" />
   </g>
 </svg>
--- a/pidgin/pixmaps/emblems/16/scalable/blocked.svg	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/pixmaps/emblems/16/scalable/blocked.svg	Tue Jul 10 05:42:51 2007 +0000
@@ -7,63 +7,154 @@
    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://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="16"
-   height="16"
-   id="svg2"
+   width="16px"
+   height="16px"
+   id="svg4220"
    sodipodi:version="0.32"
-   inkscape:version="0.43"
-   version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/emblems"
-   sodipodi:docname="blocked.svg"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/emblems/blocked.png"
+   inkscape:version="0.44.1"
+   sodipodi:docbase="/home/hbons/Desktop/Pidgin/2.1.0/toolbars/16/scalable"
+   sodipodi:docname="block.svg"
+   inkscape:export-filename="/home/hbons/Desktop/block.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90">
   <defs
-     id="defs4">
+     id="defs4222">
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3324">
+       id="linearGradient2835">
       <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
+         style="stop-color:#c17d11;stop-opacity:1;"
          offset="0"
-         id="stop3326" />
+         id="stop2837" />
       <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
+         style="stop-color:#c17d11;stop-opacity:0;"
          offset="1"
-         id="stop3328" />
+         id="stop2839" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="9.6134882"
+       x2="11.766299"
+       y1="6.6344557"
+       x1="7.7082763"
+       id="linearGradient2774"
+       xlink:href="#linearGradient2768"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.669301,0,0,0.866653,-15.19698,-2.399762)"
+       gradientUnits="userSpaceOnUse"
+       y2="14.406374"
+       x2="15.520383"
+       y1="9.3585329"
+       x1="19.003813"
+       id="linearGradient2247"
+       xlink:href="#linearGradient2241"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="13.322957"
+       x2="16"
+       y1="24.34691"
+       x1="16"
+       id="linearGradient2209"
+       xlink:href="#linearGradient2203"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient2203"
+       inkscape:collect="always">
+      <stop
+         id="stop2205"
+         offset="0"
+         style="stop-color:#727e0a;stop-opacity:1;" />
+      <stop
+         id="stop2207"
+         offset="1"
+         style="stop-color:#727e0a;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2241"
+       inkscape:collect="always">
+      <stop
+         id="stop2243"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2245"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2768"
+       inkscape:collect="always">
+      <stop
+         id="stop2770"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2772"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:0;" />
     </linearGradient>
     <linearGradient
        inkscape:collect="always"
-       id="linearGradient3300">
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:1;"
-         offset="0"
-         id="stop3302" />
-      <stop
-         style="stop-color:#eeeeec;stop-opacity:0;"
-         offset="1"
-         id="stop3304" />
-    </linearGradient>
+       xlink:href="#linearGradient2241"
+       id="linearGradient2816"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.669301,0,0,0.866653,-15.19698,-2.399762)"
+       x1="19.003813"
+       y1="9.3585329"
+       x2="15.520383"
+       y2="14.406374" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2768"
+       id="linearGradient2818"
+       gradientUnits="userSpaceOnUse"
+       x1="7.7082763"
+       y1="6.6344557"
+       x2="11.766299"
+       y2="9.6134882" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3300"
-       id="linearGradient3306"
-       x1="8.6152382"
-       y1="-3.1597807"
-       x2="8.6152382"
-       y2="12.015507"
+       xlink:href="#linearGradient2768"
+       id="linearGradient2821"
+       gradientUnits="userSpaceOnUse"
+       x1="7.7082763"
+       y1="6.6344557"
+       x2="11.766299"
+       y2="9.6134882"
+       gradientTransform="translate(3,-5.662441e-7)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2241"
+       id="linearGradient2826"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.002185,0,0,0.866653,-24.02518,-2.399763)"
+       x1="19.003813"
+       y1="9.3585329"
+       x2="15.520383"
+       y2="14.406374" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2835"
+       id="linearGradient2841"
+       x1="4.3461514"
+       y1="4.7126884"
+       x2="5.041183"
+       y2="7.6020169"
        gradientUnits="userSpaceOnUse" />
     <linearGradient
        inkscape:collect="always"
-       xlink:href="#linearGradient3324"
-       id="linearGradient3330"
-       x1="8"
-       y1="6.0639424"
-       x2="8"
-       y2="10.979301"
-       gradientUnits="userSpaceOnUse" />
+       xlink:href="#linearGradient2835"
+       id="linearGradient2847"
+       gradientUnits="userSpaceOnUse"
+       x1="4.4093828"
+       y1="8.8709669"
+       x2="5.0730915"
+       y2="6.2707229"
+       gradientTransform="translate(4.490962,-16.76051)" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -72,21 +163,23 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="39.000665"
-     inkscape:cx="13.905353"
-     inkscape:cy="8.018215"
-     inkscape:document-units="px"
+     inkscape:zoom="25.498579"
+     inkscape:cx="19.947241"
+     inkscape:cy="9.0174755"
      inkscape:current-layer="layer1"
      showgrid="true"
-     fill="#a40000"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:object-points="false"
+     inkscape:grid-points="true"
+     inkscape:window-width="1440"
+     inkscape:window-height="849"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
      showguides="true"
-     inkscape:guide-bbox="true"
-     inkscape:window-width="1268"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     inkscape:guide-bbox="true" />
   <metadata
-     id="metadata7">
+     id="metadata4225">
     <rdf:RDF>
       <cc:Work
          rdf:about="">
@@ -97,21 +190,61 @@
     </rdf:RDF>
   </metadata>
   <g
+     id="layer1"
      inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <path
-       style="fill:#ef2929;fill-opacity:1;fill-rule:evenodd;stroke:#a40000;stroke-width:1.00000036;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 1.53125,3.5 L 5.875,7.96875 L 1.5,12.5 L 5.75,12.5 L 8,10.1875 L 10.25,12.5 L 14.5,12.5 L 10.125,7.96875 L 14.46875,3.5 L 10.21875,3.5 L 8,5.78125 L 5.78125,3.5 L 1.53125,3.5 z "
-       id="rect3316" />
+     inkscape:groupmode="layer">
+    <rect
+       style="fill:#c17d11;fill-opacity:1;stroke:#8f5902;stroke-width:0.99999875;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect1324"
+       width="11.000001"
+       height="14.999996"
+       x="-13.5"
+       y="0.49999937"
+       ry="0"
+       transform="scale(-1,1)" />
+    <rect
+       style="opacity:0.3;fill:url(#linearGradient2826);fill-opacity:1;stroke:white;stroke-width:0.99999827;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2211"
+       width="9.0000048"
+       height="12.999996"
+       x="-12.500007"
+       y="1.4999992"
+       ry="0"
+       transform="scale(-1,1)" />
     <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-0.99889296"
-       inkscape:original="M 1.53125 3.5 L 5.875 7.96875 L 1.5 12.5 L 5.75 12.5 L 8 10.1875 L 10.25 12.5 L 14.5 12.5 L 10.125 7.96875 L 14.46875 3.5 L 10.21875 3.5 L 8 5.78125 L 5.78125 3.5 L 1.53125 3.5 z "
-       xlink:href="#rect3316"
-       style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3330);stroke-width:1.00000036;stroke-miterlimit:4;stroke-opacity:1;opacity:0.25"
-       id="path3322"
-       inkscape:href="#rect3316"
-       d="M 3.875,4.5 L 6.59375,7.28125 C 6.9593447,7.6666782 6.9593447,8.2708218 6.59375,8.65625 L 3.84375,11.5 L 5.34375,11.5 L 7.28125,9.5 C 7.4695089,9.3049765 7.7289362,9.1948264 8,9.1948264 C 8.2710638,9.1948264 8.5304911,9.3049765 8.71875,9.5 L 10.65625,11.5 L 12.15625,11.5 L 9.40625,8.65625 C 9.0406553,8.2708218 9.0406553,7.6666782 9.40625,7.28125 L 12.125,4.5 L 10.625,4.5 L 8.71875,6.46875 C 8.5304911,6.6637735 8.2710638,6.7739236 8,6.7739236 C 7.7289362,6.7739236 7.4695089,6.6637735 7.28125,6.46875 L 5.375,4.5 L 3.875,4.5 z " />
+       sodipodi:type="arc"
+       style="fill:#fecb81;fill-opacity:1;stroke:none;stroke-width:2.03035927;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path2215"
+       sodipodi:cx="17.607706"
+       sodipodi:cy="10.679387"
+       sodipodi:rx="0.80383009"
+       sodipodi:ry="0.80383009"
+       d="M 18.411536 10.679387 A 0.80383009 0.80383009 0 1 1  16.803876,10.679387 A 0.80383009 0.80383009 0 1 1  18.411536 10.679387 z"
+       transform="matrix(-1.244046,0,0,1.245728,26.90479,-6.302258)" />
+    <rect
+       style="opacity:1;fill:#ce9f52;fill-opacity:1;stroke:#8f5902;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2878"
+       width="15.000005"
+       height="2.0000005"
+       x="0.49999997"
+       y="9.5" />
+    <rect
+       style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999934;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2880"
+       width="2.0000017"
+       height="3.9999959"
+       x="1.5"
+       y="8.500001"
+       rx="0.90201104"
+       ry="0.90201104" />
+    <rect
+       style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999934;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2884"
+       width="2.0000017"
+       height="3.9999959"
+       x="12.499999"
+       y="8.500001"
+       rx="0.90201104"
+       ry="0.90201104" />
   </g>
 </svg>
Binary file pidgin/pixmaps/emotes/default/22/at-wits-end.png has changed
Binary file pidgin/pixmaps/emotes/default/22/female-fighter.png has changed
Binary file pidgin/pixmaps/emotes/default/22/on-the-phone.png has changed
--- a/pidgin/pixmaps/emotes/default/22/scalable/smile-big.svg	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/pixmaps/emotes/default/22/scalable/smile-big.svg	Tue Jul 10 05:42:51 2007 +0000
@@ -7,23 +7,47 @@
    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://inkscape.sourceforge.net/DTD/s odipodi-0.dtd"
+   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.43"
+   inkscape:version="0.44.1"
    version="1.0"
-   sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/emotes"
-   sodipodi:docname="face-smile-big.svg"
-   inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/face-smile-big.png"
+   sodipodi:docbase="/home/hbons/Desktop/Pidgin/2.1.0"
+   sodipodi:docname="smile-big.svg"
+   inkscape:export-filename="/home/hbons/Desktop/smile-big.png"
    inkscape:export-xdpi="90"
    inkscape:export-ydpi="90">
   <defs
      id="defs4">
     <linearGradient
        inkscape:collect="always"
+       id="linearGradient2796">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop2798" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:0;"
+         offset="1"
+         id="stop2800" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2800">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2802" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2804" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
        id="linearGradient2192">
       <stop
          style="stop-color:#cc0000;stop-opacity:1;"
@@ -98,6 +122,34 @@
        y1="15.102485"
        x2="12.13016"
        y2="19.816549" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2800"
+       id="linearGradient2806"
+       x1="1.9297547"
+       y1="17"
+       x2="8.9865818"
+       y2="17"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2800"
+       id="linearGradient2810"
+       gradientUnits="userSpaceOnUse"
+       x1="1.9297547"
+       y1="17"
+       x2="8.9865818"
+       y2="17"
+       gradientTransform="matrix(-1,0,0,1,24,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2796"
+       id="linearGradient2802"
+       x1="12.324349"
+       y1="15.841868"
+       x2="12.324349"
+       y2="19.467697"
+       gradientUnits="userSpaceOnUse" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -106,17 +158,18 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="18.194454"
-     inkscape:cx="14.880848"
-     inkscape:cy="9.4177196"
+     inkscape:zoom="25.730844"
+     inkscape:cx="20.572824"
+     inkscape:cy="10.331755"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="true"
      fill="#ef2929"
-     inkscape:window-width="1268"
-     inkscape:window-height="971"
-     inkscape:window-x="6"
-     inkscape:window-y="21" />
+     inkscape:window-width="1434"
+     inkscape:window-height="841"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:grid-points="true" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -163,25 +216,15 @@
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
        transform="matrix(0.8019,0,0,0.801938,2.532654,3.191833)" />
     <path
-       style="opacity:1;fill:#cc0000;fill-opacity:1;stroke:#a40000;stroke-width:1.00000024;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 17.502944,13.527087 C 17.502944,15.892107 15.140024,17.503252 12.067027,17.503252 C 8.9940272,17.503252 6.5000001,15.891125 6.5000001,13.496751 C 8.8954736,13.496751 14.896167,13.527087 17.502944,13.527087 z "
-       id="path3160"
-       sodipodi:nodetypes="cscc" />
-    <path
-       style="fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 7.0137405,14 L 17,14 L 16.615267,15 L 7.4479109,15 L 7.0137405,14 z "
-       id="rect1324"
-       sodipodi:nodetypes="ccccc" />
-    <path
        sodipodi:type="arc"
-       style="opacity:0.5;fill:none;fill-opacity:1.0;stroke:#ffffff;stroke-width:1.17343897;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       style="opacity:0.5;fill:none;fill-opacity:1;stroke:white;stroke-width:1.17343903;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="path2184"
        sodipodi:cx="11.806158"
        sodipodi:cy="10.983024"
        sodipodi:rx="9.975256"
        sodipodi:ry="9.975256"
        d="M 21.781414 10.983024 A 9.975256 9.975256 0 1 1  1.8309021,10.983024 A 9.975256 9.975256 0 1 1  21.781414 10.983024 z"
-       transform="matrix(0.852176,0,0,0.852216,1.93909,2.639626)" />
+       transform="matrix(0.852176,0,0,0.852216,1.939749,2.639019)" />
     <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"
@@ -203,9 +246,29 @@
        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.856173,0,0,1.377321,6.243238,-2.099183)" />
     <path
-       style="fill:#ef2929;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 8.4015265,16 L 15.615267,16 C 15.615267,16 14.704206,16.587786 14.250771,16.656489 C 14.250771,16.656489 13.614227,17 12.116518,17 C 10.756145,17.002082 9.2677613,16.532825 9.2677613,16.532825 L 8.4015265,16 z "
-       id="path2207"
-       sodipodi:nodetypes="cccccc" />
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:#f57900;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 4.4999974,13.499993 C 4.4999974,17.423224 8.1971909,20.499996 11.999997,20.499996 C 15.802804,20.499996 19.499997,17.538156 19.499997,13.499993 L 4.4999974,13.499993 z "
+       id="path2785"
+       sodipodi:nodetypes="cscc" />
+    <rect
+       style="opacity:1;fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect2792"
+       width="0.053828847"
+       height="0.038863864"
+       x="-6"
+       y="16.577002" />
+    <path
+       style="opacity:1;fill:url(#linearGradient2806);fill-opacity:1.0;stroke:none;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 5,14 C 5.5206683,17.394223 8.4507141,20 12,20 C 15.549286,20 18.479329,17.394223 19,14 L 5,14 z "
+       id="path2798" />
+    <path
+       style="opacity:1;fill:url(#linearGradient2810);fill-opacity:1;stroke:none;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 19,14 C 18.479332,17.394223 15.549286,20 12,20 C 8.450714,20 5.520671,17.394223 5,14 L 19,14 z "
+       id="path2808" />
+    <path
+       style="opacity:0.8;fill:url(#linearGradient2802);fill-opacity:1.0;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+       d="M 7,14 L 7,18 L 8,18 L 8,14 L 7,14 z M 10,14 L 10,19 L 11,19 L 11,14 L 10,14 z M 13,14 L 13,19 L 14,19 L 14,14 L 13,14 z M 16,14 L 16,18 L 17,18 L 17,14 L 16,14 z "
+       id="path1900"
+       sodipodi:nodetypes="cccccccccccccccccccc" />
   </g>
 </svg>
Binary file pidgin/pixmaps/emotes/default/22/smile-big.png has changed
Binary file pidgin/pixmaps/emotes/default/22/time-out.png has changed
--- a/pidgin/pixmaps/icons/16/scalable/pidgin.svg	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/pixmaps/icons/16/scalable/pidgin.svg	Tue Jul 10 05:42:51 2007 +0000
@@ -664,8 +664,8 @@
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
      inkscape:zoom="30.009658"
-     inkscape:cx="12.410351"
-     inkscape:cy="9.6914614"
+     inkscape:cx="15.476031"
+     inkscape:cy="9.174961"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:grid-bbox="true"
@@ -743,7 +743,7 @@
        sodipodi:rx="1.2410715"
        sodipodi:ry="1.2946428"
        d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1  8.928571,24.3125 A 1.2410715 1.2946428 0 1 1  11.410714 24.3125 z"
-       transform="matrix(1.208634,0,0,1.158623,-8.791372,-20.66902)" />
+       transform="matrix(0.805757,0,0,1.158623,-4.194263,-20.66902)" />
     <path
        style="opacity:1;fill:#a46bb0;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
        d="M 11.387086,4.6790601 C 10.509745,3.6558267 9.0824486,3.9284339 8.5222543,4.5817815 C 7.7545814,5.4771092 7.8435868,7.0342022 8.7209273,8.0574357 C 9.4833498,8.9466415 10.737398,9.413013 11.505071,8.5176851 C 12.272744,7.6223568 12.080215,5.4874505 11.387086,4.6790601 z "
@@ -764,7 +764,7 @@
        sodipodi:rx="1.2410715"
        sodipodi:ry="1.2946428"
        d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1  8.928571,24.3125 A 1.2410715 1.2946428 0 1 1  11.410714 24.3125 z"
-       transform="matrix(1.208633,0,0,1.158626,-2.791363,-20.66909)" />
+       transform="matrix(0.805754,0,0,1.158626,0.805772,-20.66909)" />
     <path
        style="fill:#3b1941;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
        d="M -3.174544e-16,1.7837407 C 0.49897694,0.43045085 3.4176637,1.3941391 4.4321866,1.7478251 L 2.7448964,2 L -3.174544e-16,1.7837407 z "
Binary file pidgin/pixmaps/icons/24/pidgin.png has changed
--- a/pidgin/pixmaps/icons/24/scalable/pidgin.svg	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/pixmaps/icons/24/scalable/pidgin.svg	Tue Jul 10 05:42:51 2007 +0000
@@ -14,7 +14,7 @@
    id="svg4345"
    sodipodi:version="0.32"
    inkscape:version="0.44.1"
-   sodipodi:docbase="/home/hbons/Desktop/2.0.2/pidgin/pixmaps/icons/24/scalable"
+   sodipodi:docbase="/home/hbons/Desktop/Pidgin/2.1.0/icons/24/scalable"
    sodipodi:docname="pidgin.svg"
    inkscape:export-filename="/home/hbons/Desktop/pidgin24.png"
    inkscape:export-xdpi="90"
@@ -182,10 +182,11 @@
        xlink:href="#linearGradient6506"
        id="linearGradient6512"
        x1="15.645709"
-       y1="40.434063"
+       y1="39.029884"
        x2="15.645709"
-       y2="43.693668"
-       gradientUnits="userSpaceOnUse" />
+       y2="43.206608"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.660903,0,0,0.627207,-0.293224,-4.361383)" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient6817"
@@ -419,35 +420,47 @@
        y1="16.618088"
        x2="27.598003"
        y2="36.64465"
-       gradientUnits="userSpaceOnUse" />
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.660903,0,0,0.627207,-0.293224,-4.361383)" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3116"
        id="linearGradient3122"
        x1="15.722902"
-       y1="39.585075"
+       y1="38.768803"
        x2="15.722902"
-       y2="45.76453"
-       gradientUnits="userSpaceOnUse" />
+       y2="43.249905"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.67692,0,0,0.646801,-0.560381,-4.949693)" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient3124"
        id="linearGradient3130"
        x1="13.150809"
-       y1="39.39394"
+       y1="38.849556"
        x2="13.150809"
-       y2="45.551888"
-       gradientUnits="userSpaceOnUse" />
+       y2="43.105652"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.67692,0,0,0.646801,-0.560381,-4.949693)" />
     <linearGradient
        inkscape:collect="always"
        xlink:href="#linearGradient2850"
        id="linearGradient3146"
        gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.769231,0,0,0.714287,-3.230767,-7.285729)"
+       gradientTransform="matrix(0.769231,0,0,0.714287,-2.265038,-6.285729)"
        x1="21.785719"
        y1="28.142857"
        x2="17.785713"
        y2="30.07143" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5438"
+       id="linearGradient2848"
+       gradientUnits="userSpaceOnUse"
+       x1="30.152058"
+       y1="-0.86487341"
+       x2="30.152058"
+       y2="23.011967" />
   </defs>
   <sodipodi:namedview
      id="base"
@@ -456,15 +469,15 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="16.081777"
-     inkscape:cx="21.855503"
-     inkscape:cy="14.873812"
+     inkscape:zoom="32.163554"
+     inkscape:cx="16.820721"
+     inkscape:cy="19.317678"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:grid-bbox="true"
      inkscape:document-units="px"
-     inkscape:window-width="1434"
-     inkscape:window-height="840"
+     inkscape:window-width="1440"
+     inkscape:window-height="846"
      inkscape:window-x="0"
      inkscape:window-y="0"
      showguides="true"
@@ -489,46 +502,28 @@
      inkscape:label="Layer 1"
      inkscape:groupmode="layer">
     <path
-       style="fill:#efefef;fill-opacity:1;stroke:#787878;stroke-width:2.68207097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 17.892492,1.5 C 14.553935,1.5 11.861242,4.611235 11.861242,8.46875 L 11.861242,20.53125 C 11.861242,24.388765 14.790157,28.553306 18.128714,28.553306 L 33.206307,28.454853 L 33.212431,35.359517 L 40.550287,28.59293 C 46.237519,28.59293 46.5,25.478162 46.5,20.728157 L 46.5,8.46875 C 46.5,4.6112353 43.807307,1.5 40.46875,1.5 L 17.892492,1.5 z "
-       id="path4547"
-       sodipodi:nodetypes="ccccccccccc"
-       transform="matrix(0.375302,0,0,0.370406,6.048447,-5.560909e-2)" />
-    <path
-       sodipodi:type="inkscape:offset"
-       inkscape:radius="-2.6972473"
-       inkscape:original="M 17.90625 1.5 C 14.567693 1.5 11.875 4.611235 11.875 8.46875 L 11.875 20.53125 C 11.875 24.388765 14.786443 28.5625 18.125 28.5625 L 33.21875 28.46875 L 33.21875 35.375 L 40.5625 28.59375 C 46.249734 28.59375 46.5 25.468755 46.5 20.71875 L 46.5 8.46875 C 46.5 4.6112353 43.807307 1.5 40.46875 1.5 L 17.90625 1.5 z "
-       style="fill:url(#linearGradient5444);fill-opacity:1.0;stroke:white;stroke-width:2.68207097;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path5436"
-       d="M 17.90625,4.1875 C 16.243421,4.1875 14.5625,5.8664228 14.5625,8.46875 L 14.5625,20.53125 C 14.5625,21.781429 15.113741,23.319209 15.90625,24.375 C 16.698759,25.430791 17.57972,25.875 18.125,25.875 L 33.1875,25.78125 C 33.904865,25.775598 34.594934,26.055928 35.105127,26.560257 C 35.61532,27.064586 35.903608,27.751368 35.90625,28.46875 L 35.90625,29.21875 L 38.71875,26.625 C 39.22009,26.160499 39.879056,25.903614 40.5625,25.90625 C 42.912093,25.90625 43.047945,25.595299 43.3125,25.125 C 43.577055,24.654701 43.8125,23.046382 43.8125,20.71875 L 43.8125,8.46875 C 43.8125,5.8664232 42.131579,4.1875 40.46875,4.1875 L 17.90625,4.1875 z "
-       transform="matrix(0.375302,0,0,0.370406,6.048447,-5.560909e-2)" />
-    <path
        style="opacity:1;fill:#75507b;fill-opacity:1"
-       d="M 36.0625,8 C 33.978257,8 33.334928,10.523086 34.78125,12.9375 C 35.250389,13.720651 36.674297,15.15311 36.86722,15.15311 L 36.878267,14.508325 C 36.288194,13.580567 35.517363,12.502064 35.686987,12.281543 C 37.835781,12.281543 38,11.491782 38,10.027674 C 38,8.7542399 37.228501,8 36.0625,8 z "
+       d="M 11.578108,7.0000021 C 7.9352949,7.0000021 6.8108928,10.527259 9.3387556,13.902593 C 10.158711,14.997432 12.647399,17 12.984587,17 L 13.003895,16.098595 C 11.972573,14.801596 10.625325,13.293856 10.921791,12.985569 C 14.677426,12.985569 14.964445,11.881489 14.964445,9.8346762 C 14.964445,8.0544242 13.616029,7.0000021 11.578108,7.0000021 z "
        id="path6521"
-       transform="matrix(1.747787,0,0,1.397993,-52.41719,-5.183942)"
        sodipodi:nodetypes="csccccc" />
     <path
-       style="opacity:1;fill:url(#linearGradient3122);fill-opacity:1.0;stroke:url(#linearGradient3130);stroke-width:1.51128328;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 15,13 C 8.3759979,13 3,18.600001 3,25.5 C 3,31.153143 2.9750563,38.402618 2.9750563,45.572826 C 4.1625449,45.572826 27.946366,45.600605 30.637365,45.600605 C 32.751492,45.600605 32.586331,43.541005 32.586331,43.541005 C 32.586331,40.875594 27.597902,38.639057 25.813453,36.682531 C 23.985035,34.68151 26,30.5 26,30.5 C 26.641306,28.9702 27,27.275084 27,25.5 C 27,18.600001 21.624002,13 15,13 z "
+       style="opacity:1;fill:url(#linearGradient3122);fill-opacity:1;stroke:url(#linearGradient3130);stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 9.593419,3.4587201 C 5.1094995,3.4587201 1.470379,7.0808064 1.470379,11.543733 C 1.470379,15.200191 1.4534941,19.889159 1.4534941,24.526857 C 2.2573289,24.526857 18.357073,24.544824 20.178665,24.544824 C 21.609759,24.544824 21.497959,23.212673 21.497959,23.212673 C 21.497959,21.488682 18.121191,20.042088 16.913262,18.776605 C 15.675569,17.482342 17.039539,14.777738 17.039539,14.777738 C 17.473652,13.788261 17.716459,12.691859 17.716459,11.543733 C 17.716459,7.0808064 14.077339,3.4587201 9.593419,3.4587201 z "
        id="path5176"
-       sodipodi:nodetypes="ccccszcsc"
-       transform="matrix(0.67692,0,0,0.646801,-1.52611,-5.949693)" />
+       sodipodi:nodetypes="ccccszcsc" />
     <path
-       transform="matrix(0.660903,0,0,0.627207,-1.258953,-5.361383)"
-       style="opacity:0.5;fill:url(#linearGradient3114);fill-opacity:1.0;stroke:url(#linearGradient6512);stroke-width:1.55319395;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="M 15,14.0625 C 8.9877035,14.0625 4.0789961,19.13808 4.0625,25.46875 C 4.0624722,25.479427 4.0617033,25.489349 4.0625,25.5 C 4.0625,32.787473 3.9033639,38.26012 3.9033639,44.499878 C 5.8399452,44.499878 22.452275,44.470084 28.278248,44.470084 C 29.445455,44.470084 31.431654,44.974157 31.431654,43.509594 C 31.431654,43.287851 31.231903,42.870917 30.681654,42.353344 C 30.131405,41.835771 29.308414,41.280003 28.400404,40.728344 C 26.665321,39.858723 25.411769,39.090553 24.621247,37.290844 C 24.011242,36.47675 23.731303,35.519763 23.676839,34.478344 C 23.622375,33.436925 24.107721,32.319635 24.224561,31.259594 C 24.458241,29.139511 24.96875,30.28125 24.96875,30.28125 C 24.98374,30.216952 25.004663,30.154183 25.03125,30.09375 C 25.618731,28.692346 25.9375,27.131297 25.9375,25.5 C 25.9375,19.154404 21.022436,14.0625 15,14.0625 z "
+       style="opacity:0.5;fill:url(#linearGradient3114);fill-opacity:1;stroke:url(#linearGradient6512);stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 9.620321,4.4587156 C 5.6467762,4.4587156 2.4025968,7.6421549 2.3916944,11.612795 C 2.3916761,11.619492 2.3911679,11.625715 2.3916944,11.632396 C 2.3916944,16.20315 2.2865209,19.635632 2.2865209,23.549252 C 3.5664133,23.549252 14.545552,23.530565 18.395955,23.530565 C 19.167366,23.530565 20.480051,23.846723 20.480051,22.928139 C 20.480051,22.78906 20.348035,22.527556 19.984374,22.202931 C 19.620712,21.878306 19.076795,21.529724 18.476689,21.18372 C 17.329967,20.638287 16.501491,20.156486 15.979032,19.027696 C 15.575878,18.51709 15.390866,17.916861 15.35487,17.263676 C 15.318875,16.610491 15.639642,15.909718 15.716861,15.244853 C 15.871301,13.915122 16.208698,14.631229 16.208698,14.631229 C 16.218605,14.590901 16.232433,14.551532 16.250005,14.513628 C 16.638273,13.634657 16.848948,12.655557 16.848948,11.632396 C 16.848948,7.6523934 13.600567,4.4587156 9.620321,4.4587156 z "
        id="path5241"
        sodipodi:nodetypes="cscccssccsscssc" />
     <path
        style="fill:#a46bb0;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 3.072604,7.0864988 C 4.607952,5.4493238 7.105721,5.8854918 8.086061,6.9308478 C 9.4294869,8.3633698 9.273726,10.85472 7.738379,12.491894 C 6.404137,13.914624 4.209552,14.660821 2.866124,13.228299 C 1.522696,11.795776 1.859625,8.3799248 3.072604,7.0864988 z "
+       d="M 4.038333,8.0864989 C 5.573681,6.4493239 8.07145,6.8854919 9.05179,7.9308479 C 10.395216,9.3633699 10.239455,11.85472 8.704108,13.491894 C 7.369866,14.914624 5.175281,15.660821 3.831853,14.228299 C 2.488425,12.795776 2.825354,9.3799249 4.038333,8.0864989 z "
        id="path3138"
        sodipodi:nodetypes="csssc" />
     <path
-       transform="matrix(1.010846,0,0,1.029732,-5.552971,-15.17001)"
        style="opacity:1;fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 13.257119,24.626053 C 13.257119,26.227351 11.8279,27.316574 10.863875,27.316574 C 9.5428049,27.316574 8.4706318,26.01697 8.4706318,24.415672 C 8.4706318,23.024119 9.2055946,21.514771 10.526665,21.514771 C 11.847736,21.514771 13.257119,23.360971 13.257119,24.626053 z "
+       d="M 8.8136637,11.188225 C 8.8136637,12.837133 7.3689434,13.95874 6.3944626,13.95874 C 5.0590642,13.95874 3.9752623,12.620497 3.9752623,10.971589 C 3.9752623,9.5386622 4.7181965,7.9844383 6.0535952,7.9844383 C 7.3889945,7.9844383 8.8136637,9.8855295 8.8136637,11.188225 z "
        id="path5157"
        sodipodi:nodetypes="csssc" />
     <path
@@ -540,36 +535,25 @@
        sodipodi:rx="1.2410715"
        sodipodi:ry="1.2946428"
        d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1  8.928571,24.3125 A 1.2410715 1.2946428 0 1 1  11.410714 24.3125 z"
-       transform="matrix(1.208633,0,0,1.158621,-6.791366,-17.66897)" />
+       transform="matrix(1.208633,0,0,1.158621,-5.825637,-16.66897)" />
     <path
-       transform="matrix(0.670792,0,0,0.486348,-3.805943,-3.90166)"
        style="fill:#3b1941;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 11.651119,11.193815 C 13.577759,8.2509126 16.249277,11.481501 17.614226,12.804399 L 14.761306,13.747613 L 11.651119,11.193815 z "
+       d="M 4.9752634,2.5424297 C 6.2676381,1.111155 8.059671,2.6823452 8.9752679,3.325734 L 7.061552,3.7844642 L 4.9752634,2.5424297 z "
        id="path5192"
        sodipodi:nodetypes="cccc" />
     <path
-       transform="matrix(0.851014,0,0,0.554879,-3.938174,-5.194599)"
        style="fill:#3b1941;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 11.689238,9.8218679 C 13.591296,8.0161941 17.174576,11.994261 17.519594,13.650486 L 14.543472,12.891665 L 11.689238,9.8218679 z "
+       d="M 6.9752602,1.2553494 C 8.5939382,0.25341885 11.64336,2.4607647 11.936975,3.3797691 L 9.4042533,2.9587153 L 6.9752602,1.2553494 z "
        id="rect5189"
        sodipodi:nodetypes="cccc" />
-    <rect
-       style="opacity:0.23144106;fill:#2e3436;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect3034"
-       width="36.000004"
-       height="2.9999979"
-       x="-84.444725"
-       y="32.42485"
-       rx="2.0412357"
-       ry="1.4999989" />
     <path
        style="fill:#975fa3;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 16.371022,7.8148748 C 15.47069,6.586993 14.005993,6.9141191 13.43112,7.6981356 C 12.643332,8.7725276 12.734671,10.64104 13.635002,11.868921 C 14.417404,12.93597 15.704314,13.495617 16.492103,12.421225 C 17.279892,11.346833 17.082315,8.7849447 16.371022,7.8148748 z "
+       d="M 17.336751,8.8148749 C 16.436419,7.5869931 14.971722,7.9141192 14.396849,8.6981357 C 13.609061,9.7725277 13.7004,11.64104 14.600731,12.868921 C 15.383133,13.93597 16.670043,14.495617 17.457832,13.421225 C 18.245621,12.346833 18.048044,9.7849448 17.336751,8.8148749 z "
        id="path3132"
        sodipodi:nodetypes="csssc" />
     <path
        style="fill:white;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 16.502957,8.5432477 C 15.827476,7.7246593 14.728576,7.9427464 14.297274,8.4654263 C 13.706229,9.1816906 13.774757,10.427368 14.450238,11.245957 C 15.037241,11.957323 16.002754,12.33042 16.593798,11.614156 C 17.184843,10.897891 17.03661,9.1899614 16.502957,8.5432477 z "
+       d="M 17.468686,9.5432478 C 16.793205,8.7246594 15.694305,8.9427465 15.263003,9.4654264 C 14.671958,10.181691 14.740486,11.427368 15.415967,12.245957 C 16.00297,12.957323 16.968483,13.33042 17.559527,12.614156 C 18.150572,11.897891 18.002339,10.189962 17.468686,9.5432478 z "
        id="path3134"
        sodipodi:nodetypes="csssc" />
     <path
@@ -581,24 +565,24 @@
        sodipodi:rx="1.2410715"
        sodipodi:ry="1.2946428"
        d="M 11.410714 24.3125 A 1.2410715 1.2946428 0 1 1  8.928571,24.3125 A 1.2410715 1.2946428 0 1 1  11.410714 24.3125 z"
-       transform="matrix(1.153827,0,0,1.158621,3.593156,-17.66895)" />
+       transform="matrix(1.153827,0,0,1.158621,4.558885,-16.66895)" />
     <rect
        style="fill:#eeeeec;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
        id="rect3140"
        width="4.4400907"
        height="1"
-       x="8.5358553"
-       y="13"
+       x="9.501585"
+       y="14"
        rx="0.69182354"
        ry="0.5" />
     <path
        style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1.0283047;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 6,13.893438 C 11.088512,17.243015 10.655188,12 11.431469,12 C 12.197069,12 11.699301,17.201991 16,13.895644 C 15.267157,15.102946 13.014668,17 12.06507,17 C 11.104781,17 7.190872,15.676807 6,13.893438 z "
+       d="M 6.965729,14.893438 C 12.054241,18.243015 11.620917,13 12.397198,13 C 13.162798,13 12.66503,18.201991 16.965729,14.895644 C 16.232886,16.102946 13.980397,18 13.030799,18 C 12.07051,18 8.156601,16.676807 6.965729,14.893438 z "
        id="path3142"
        sodipodi:nodetypes="czczc" />
     <path
        style="fill:url(#linearGradient3146);fill-opacity:1;stroke:none;stroke-width:1.0283047;stroke-miterlimit:4;stroke-opacity:1"
-       d="M 6,13.893439 C 10.740404,18.171305 10.655188,12 11.431469,12 C 12.197069,12 11.641283,17.027939 16,13.895646 C 15.267157,15.102947 13.014668,17 12.06507,17 C 11.104781,17 7.190873,15.676809 6,13.893439 z "
+       d="M 6.965729,14.893439 C 11.706133,19.171305 11.620917,13 12.397198,13 C 13.162798,13 12.607012,18.027939 16.965729,14.895646 C 16.232886,16.102947 13.980397,18 13.030799,18 C 12.07051,18 8.156602,16.676809 6.965729,14.893439 z "
        id="path3144"
        sodipodi:nodetypes="czczc" />
   </g>
Binary file pidgin/pixmaps/toolbar/16/unblock.png has changed
--- a/pidgin/plugins/perl/common/Makefile.mingw	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/plugins/perl/common/Makefile.mingw	Tue Jul 10 05:42:51 2007 +0000
@@ -18,6 +18,7 @@
 INCLUDE_PATHS =		-I. \
 			-I$(PIDGIN_TREE_TOP) \
 			-I$(PURPLE_TOP) \
+			-I$(PURPLE_TOP)/win32 \
 			-I$(PIDGIN_TOP) \
 			-I$(PIDGIN_TOP)/win32 \
 			-I$(GTK_TOP)/include \
--- a/pidgin/plugins/win32/transparency/win2ktrans.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/plugins/win32/transparency/win2ktrans.c	Tue Jul 10 05:42:51 2007 +0000
@@ -76,15 +76,6 @@
 /*
  *  CODE
  */
-static GtkWidget *wpurple_button(const char *text, const char *pref, GtkWidget *page) {
-	GtkWidget *button;
-	button = gtk_check_button_new_with_mnemonic(text);
-	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),
-		purple_prefs_get_bool(pref));
-	gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0);
-	gtk_widget_show(button);
-	return button;
-}
 
 /* Set window transparency level */
 static void set_wintrans(GtkWidget *window, int alpha, gboolean enabled,
@@ -233,7 +224,8 @@
 		G_CALLBACK(focus_conv_win_cb), window);
 }
 
-static void purple_conversation_delete(PurpleConversation *conv) {
+static void
+conversation_delete_cb(PurpleConversation *conv) {
 	PidginWindow *win = pidgin_conv_get_window(PIDGIN_CONVERSATION(conv));
 	/* If it is the last conversation in the window, cleanup */
 	if (pidgin_conv_window_get_gtkconv_count(win) == 1)
@@ -391,12 +383,35 @@
 		remove_convs_wintrans(FALSE);
 }
 
-static void purple_new_conversation(PurpleConversation *conv) {
+static void
+conv_updated_cb(PurpleConversation *conv, PurpleConvUpdateType type) {
+	PidginConversation *pconv = PIDGIN_CONVERSATION(conv);
+	PidginWindow *win = pidgin_conv_get_window(pconv);
+
+	if (type == PURPLE_CONV_UPDATE_UNSEEN && !pidgin_conv_is_hidden(pconv)
+			&& pconv->unseen_state == PIDGIN_UNSEEN_NONE
+			&& pidgin_conv_window_get_gtkconv_count(win) == 1) {
+		GtkWidget *window = win->window;
+
+		set_conv_window_trans(NULL, win);
+
+		if (g_signal_handler_find(G_OBJECT(window), G_SIGNAL_MATCH_FUNC,
+				0, 0, NULL, G_CALLBACK(focus_conv_win_cb), NULL) == 0) {
+			g_signal_connect(G_OBJECT(window), "focus_in_event",
+				G_CALLBACK(focus_conv_win_cb), window);
+			g_signal_connect(G_OBJECT(window), "focus_out_event",
+				G_CALLBACK(focus_conv_win_cb), window);
+		}
+	}
+}
+
+static void
+new_conversation_cb(PurpleConversation *conv) {
 	PidginWindow *win = pidgin_conv_get_window(PIDGIN_CONVERSATION(conv));
 
 	/* If it is the first conversation in the window,
 	 * add the sliders, and set transparency */
-	if (pidgin_conv_window_get_gtkconv_count(win) == 1) {
+	if (!pidgin_conv_is_hidden(PIDGIN_CONVERSATION(conv)) && pidgin_conv_window_get_gtkconv_count(win) == 1) {
 		GtkWidget *window = win->window;
 
 		set_conv_window_trans(NULL, win);
@@ -408,7 +423,8 @@
 	}
 }
 
-static void blist_created_cb(PurpleBuddyList *purple_blist, gpointer data) {
+static void
+blist_created_cb(PurpleBuddyList *purple_blist, gpointer data) {
 	if (blist) {
 		if (purple_prefs_get_bool(OPT_WINTRANS_BL_ENABLED)) {
 			set_wintrans(blist,
@@ -477,17 +493,21 @@
 
 	purple_signal_connect(purple_conversations_get_handle(),
 		"conversation-created", plugin,
-		PURPLE_CALLBACK(purple_new_conversation), NULL);
+		PURPLE_CALLBACK(new_conversation_cb), NULL);
 
 	/* Set callback to remove window from the list, if the window is destroyed */
 	purple_signal_connect(purple_conversations_get_handle(),
 		"deleting-conversation", plugin,
-		PURPLE_CALLBACK(purple_conversation_delete), NULL);
+		PURPLE_CALLBACK(conversation_delete_cb), NULL);
 
 	purple_signal_connect(pidgin_conversations_get_handle(),
 		"conversation-dragging", plugin,
 		PURPLE_CALLBACK(set_conv_window_trans), NULL);
 
+	purple_signal_connect(purple_conversations_get_handle(),
+		"conversation-updated", plugin,
+		PURPLE_CALLBACK(conv_updated_cb), NULL);
+
 	update_existing_convs();
 
 	if (blist)
@@ -531,7 +551,7 @@
 
 	/* IM Convo trans options */
 	imtransbox = pidgin_make_frame(ret, _("IM Conversation Windows"));
-	button = wpurple_button(_("_IM window transparency"),
+	button = pidgin_prefs_checkbox(_("_IM window transparency"),
 		OPT_WINTRANS_IM_ENABLED, imtransbox);
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(update_convs_wintrans),
@@ -545,7 +565,7 @@
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(pidgin_toggle_sensitive), trans_box);
 
-	button = wpurple_button(_("_Show slider bar in IM window"),
+	button = pidgin_prefs_checkbox(_("_Show slider bar in IM window"),
 		OPT_WINTRANS_IM_SLIDER, trans_box);
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(update_convs_wintrans),
@@ -555,7 +575,7 @@
 		_("Remove IM window transparency on focus"),
 		OPT_WINTRANS_IM_ONFOCUS, trans_box);
 
-	button = wpurple_button(_("Always on top"), OPT_WINTRANS_IM_ONTOP,
+	button = pidgin_prefs_checkbox(_("Always on top"), OPT_WINTRANS_IM_ONTOP,
 		trans_box);
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(update_convs_wintrans),
@@ -588,7 +608,7 @@
 
 	/* Buddy List trans options */
 	bltransbox = pidgin_make_frame (ret, _("Buddy List Window"));
-	button = wpurple_button(_("_Buddy List window transparency"),
+	button = pidgin_prefs_checkbox(_("_Buddy List window transparency"),
 		OPT_WINTRANS_BL_ENABLED, bltransbox);
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(set_blist_trans),
@@ -603,7 +623,7 @@
 	button = pidgin_prefs_checkbox(
 		_("Remove Buddy List window transparency on focus"),
 		OPT_WINTRANS_BL_ONFOCUS, trans_box);
-	button = wpurple_button(_("Always on top"), OPT_WINTRANS_BL_ONTOP,
+	button = pidgin_prefs_checkbox(_("Always on top"), OPT_WINTRANS_BL_ONTOP,
 		trans_box);
 	g_signal_connect(GTK_OBJECT(button), "clicked",
 		GTK_SIGNAL_FUNC(set_blist_trans),
--- a/pidgin/win32/gtkwin32dep.c	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/win32/gtkwin32dep.c	Tue Jul 10 05:42:51 2007 +0000
@@ -36,6 +36,8 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkwin32.h>
 
+#include "internal.h"
+
 #include "debug.h"
 #include "notify.h"
 
--- a/pidgin/win32/gtkwin32dep.h	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/win32/gtkwin32dep.h	Tue Jul 10 05:42:51 2007 +0000
@@ -45,5 +45,5 @@
 void winpidgin_post_init(void);
 void winpidgin_cleanup(void);
 
-#endif /* _WIN32DEP_H_ */
+#endif /* _GTKWIN32DEP_H_ */
 
--- a/pidgin/win32/nsis/pidgin-installer.nsi	Thu Jul 05 08:06:08 2007 +0000
+++ b/pidgin/win32/nsis/pidgin-installer.nsi	Tue Jul 10 05:42:51 2007 +0000
@@ -1168,6 +1168,35 @@
   ;Preselect the URI handlers as appropriate
   Call SelectURIHandlerSelections
 
+  ;Preselect the "shortcuts" checkboxes according to the previous installation
+  ClearErrors
+  ;Make sure that there was a previous installation
+  ReadRegStr $R0 HKCU "${PIDGIN_REG_KEY}" "Installer Language"
+  IfErrors done_preselecting_shortcuts
+    ;Does the Desktop shortcut exist?
+    GetFileTime "$DESKTOP\Pidgin.lnk" $R0 $R0
+    IfErrors +1 +4
+    ClearErrors
+    SetShellVarContext "all"
+    GetFileTime "$DESKTOP\Pidgin.lnk" $R0 $R0
+    IfErrors preselect_startmenu_shortcut ;Desktop Shortcut if off by default
+    !insertmacro SelectSection ${SecDesktopShortcut}
+  preselect_startmenu_shortcut:
+    ;Reset ShellVarContext because we may have changed it
+    SetShellVarContext "current"
+    ClearErrors
+    ;Does the StartMenu shortcut exist?
+    GetFileTime "$SMPROGRAMS\Pidgin.lnk" $R0 $R0
+    IfErrors +1 done_preselecting_shortcuts ;StartMenu Shortcut is on by default
+    ClearErrors
+    SetShellVarContext "all"
+    GetFileTime "$SMPROGRAMS\Pidgin.lnk" $R0 $R0
+    IfErrors +1 done_preselecting_shortcuts ;StartMenu Shortcut is on by default
+    !insertmacro UnselectSection ${SecStartMenuShortcut}
+  done_preselecting_shortcuts:
+  ;Reset ShellVarContext because we may have changed it
+  SetShellVarContext "current"
+
   StrCpy $ISSILENT "/NOUI"
 
   ; GTK installer has two silent states.. one with Message boxes, one without
@@ -1305,7 +1334,7 @@
 
 !ifndef WITH_GTK
   ; If this installer dosn't have GTK, check whether we need it.
-  ; We do this here an not in .onInit because language change in
+  ; We do this here and not in .onInit because language change in
   ; .onInit doesn't take effect until it is finished.
   Call DoWeNeedGtk
   Pop $R0