changeset 16442:08db93bbd798

Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
author Evan Schoenberg <evan.s@dreskin.net>
date Thu, 26 Apr 2007 12:25:49 +0000
parents a46a0362dc34
children 1939bd0f74e4 eb36a10796d7
files ChangeLog.API finch/gntaccount.c finch/gntblist.c finch/gntconn.c finch/gntplugin.c finch/gntpounce.c finch/gntprefs.c finch/gntrequest.c finch/gntstatus.c libpurple/account.c libpurple/conversation.c libpurple/ft.c libpurple/plugins/autoaccept.c libpurple/plugins/buddynote.c libpurple/plugins/idle.c libpurple/plugins/offlinemsg.c libpurple/plugins/perl/common/Request.xs libpurple/protocols/gg/gg.c libpurple/protocols/jabber/auth.c libpurple/protocols/jabber/buddy.c libpurple/protocols/jabber/chat.c libpurple/protocols/jabber/jabber.c libpurple/protocols/jabber/presence.c libpurple/protocols/jabber/xdata.c libpurple/protocols/msn/dialog.c libpurple/protocols/msn/msn.c libpurple/protocols/novell/novell.c libpurple/protocols/oscar/oscar.c libpurple/protocols/oscar/peer.c libpurple/protocols/qq/buddy_info.c libpurple/protocols/qq/buddy_opt.c libpurple/protocols/qq/group.c libpurple/protocols/qq/group_im.c libpurple/protocols/qq/group_join.c libpurple/protocols/qq/group_opt.c libpurple/protocols/qq/sys_msg.c libpurple/protocols/sametime/sametime.c libpurple/protocols/yahoo/yahoo.c libpurple/request.c libpurple/request.h libpurple/server.c pidgin/gtkaccount.c pidgin/gtkblist.c pidgin/gtkconv.c pidgin/gtkdebug.c pidgin/gtkdialogs.c pidgin/gtkimhtmltoolbar.c pidgin/gtklog.c pidgin/gtkplugin.c pidgin/gtkpounce.c pidgin/gtkprefs.c pidgin/gtkprivacy.c pidgin/gtkrequest.c pidgin/gtksavedstatuses.c pidgin/gtkutils.c
diffstat 55 files changed, 480 insertions(+), 160 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog.API	Thu Apr 26 10:49:27 2007 +0000
+++ b/ChangeLog.API	Thu Apr 26 12:25:49 2007 +0000
@@ -164,6 +164,14 @@
 	* gaim_gtk_buddy_icon_get_scale_size() was changed to accept an
 	  additional parameter which is used to determine what kind of
 	  scaling should be done, if any.
+    * purple_request_input(), purple_request_choice(),
+      purple_request_choice_varg(), purple_request_action(),
+      purple_request_action_varg(), purple_request_fields(),
+      purple_request_yes_no(), purple_request_ok_cancel(),
+      purple_request_accept_cancel(), purple_request_file(), and
+      purple_request_folder() was changed to accept account, who, and
+      conversation parameters for associating the request with an account, a
+      buddy, or a conversation.
 
 	Removed:
 	* gaim_gtk_sound_{get,set}_mute() (replaced by the /gaim/gtk/sound/mute
--- a/finch/gntaccount.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntaccount.c	Thu Apr 26 12:25:49 2007 +0000
@@ -612,7 +612,9 @@
 			purple_account_get_username(account));
 
 	purple_request_action(account, _("Delete Account"), prompt, NULL, 0, account, 2,
-			_("Delete"), really_delete_account, _("Cancel"), NULL);
+			_("Delete"), really_delete_account, _("Cancel"),
+			account, NULL, NULL,
+			NULL);
 	g_free(prompt);
 }
 
@@ -829,7 +831,9 @@
 
 	buffer = make_info(account, gc, remote_user, id, alias, msg);
 	purple_request_action(NULL, NULL, _("Add buddy to your list?"),
-	                    buffer, PURPLE_DEFAULT_ACTION_NONE, data, 2,
+	                    buffer, PURPLE_DEFAULT_ACTION_NONE,
+						account, remote_user, NULL,
+						data, 2,
 	                    _("Add"),    G_CALLBACK(add_user_cb),
 	                    _("Cancel"), G_CALLBACK(free_add_user_data));
 	g_free(buffer);
@@ -901,12 +905,16 @@
 		aa->alias = g_strdup(alias);
 		aa->account = account;
 		uihandle = purple_request_action(NULL, _("Authorize buddy?"), buffer, NULL,
-			PURPLE_DEFAULT_ACTION_NONE, aa, 2,
+			PURPLE_DEFAULT_ACTION_NONE,
+			account, remote_user, NULL,
+			aa, 2,
 			_("Authorize"), authorize_and_add_cb,
 			_("Deny"), deny_no_add_cb);
 	} else {
 		uihandle = purple_request_action(NULL, _("Authorize buddy?"), buffer, NULL,
-			PURPLE_DEFAULT_ACTION_NONE, user_data, 2,
+			PURPLE_DEFAULT_ACTION_NONE,
+			account, remote_user, NULL,
+			user_data, 2,
 			_("Authorize"), auth_cb,
 			_("Deny"), deny_cb);
 	}
--- a/finch/gntblist.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntblist.c	Thu Apr 26 12:25:49 2007 +0000
@@ -313,7 +313,11 @@
 	purple_request_field_group_add_field(group, field);
 
 	purple_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
-			fields, _("Add"), G_CALLBACK(add_buddy_cb), _("Cancel"), NULL, NULL);
+			fields,
+			_("Add"), G_CALLBACK(add_buddy_cb),
+			_("Cancel"), NULL,
+			account, NULL, NULL,
+			NULL);
 }
 
 static void
@@ -380,7 +384,9 @@
 
 	purple_request_fields(NULL, _("Add Chat"), NULL,
 			_("You can edit more information from the context menu later."),
-			fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL, NULL);
+			fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL,
+			NULL, NULL, NULL,
+			NULL);
 }
 
 static void
@@ -413,7 +419,9 @@
 {
 	purple_request_input(NULL, _("Add Group"), NULL, _("Enter the name of the group"),
 			NULL, FALSE, FALSE, NULL,
-			_("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL, NULL);
+			_("Add"), G_CALLBACK(add_group_cb), _("Cancel"), NULL,
+			NULL, NULL, NULL,
+			NULL);
 }
 
 static PurpleBlistUiOps blist_ui_ops =
@@ -739,7 +747,9 @@
 	g_list_free(parts);
 
 	purple_request_fields(NULL, _("Edit Chat"), NULL, _("Please Update the necessary fields."),
-			fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL, chat);
+			fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL,
+			NULL, NULL, NULL,
+			chat);
 }
 
 static void
@@ -927,7 +937,9 @@
 	text = PURPLE_BLIST_NODE_IS_GROUP(node) ? _("Rename") : _("Alias");
 	purple_request_input(node, text, prompt, _("Enter empty string to reset the name."),
 			name, FALSE, FALSE, NULL, text, G_CALLBACK(rename_blist_node),
-			_("Cancel"), NULL, node);
+			_("Cancel"), NULL,
+			NULL, NULL, NULL,
+			node);
 
 	g_free(prompt);
 }
@@ -990,6 +1002,7 @@
 static void
 finch_blist_remove_node_cb(PurpleBlistNode *node, PurpleBlistNode *selected)
 {
+	PurpleAccount *account = NULL;
 	char *primary;
 	const char *name, *sec = NULL;
 
@@ -999,12 +1012,12 @@
 		name = purple_contact_get_alias(c);
 		if (c->totalsize > 1)
 			sec = _("Removing this contact will also remove all the buddies in the contact");
-	} else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
+	} else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) {
 		name = purple_buddy_get_name((PurpleBuddy*)node);
-	else if (PURPLE_BLIST_NODE_IS_CHAT(node))
+		account = purple_buddy_get_account((PurpleBuddy*)node);
+	} else if (PURPLE_BLIST_NODE_IS_CHAT(node)) {
 		name = purple_chat_get_name((PurpleChat*)node);
-	else if (PURPLE_BLIST_NODE_IS_GROUP(node))
-	{
+	} else if (PURPLE_BLIST_NODE_IS_GROUP(node)) {
 		name = ((PurpleGroup*)node)->name;
 		sec = _("Removing this group will also remove all the buddies in the group");
 	}
@@ -1016,7 +1029,9 @@
 	/* XXX: anything to do with the returned ui-handle? */
 	purple_request_action(node, _("Confirm Remove"),
 			primary, sec,
-			1, node, 2,
+			1,
+			account, name, NULL,
+			node, 2,
 			_("Remove"), finch_blist_remove_node,
 			_("Cancel"), NULL);
 	g_free(primary);
@@ -2052,6 +2067,7 @@
 						fields,
 						_("OK"), G_CALLBACK(send_im_select_cb),
 						_("Cancel"), NULL,
+						NULL, NULL, NULL,
 						NULL);
 }
 
--- a/finch/gntconn.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntconn.c	Thu Apr 26 12:25:49 2007 +0000
@@ -43,6 +43,7 @@
 			act, text);
 
 	purple_request_action(account, _("Connection Error"), primary, secondary, 1,
+						account, NULL, NULL,
 						account, 2,
 						_("OK"), NULL,
 						_("Connect"),
--- a/finch/gntplugin.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntplugin.c	Thu Apr 26 12:25:49 2007 +0000
@@ -333,6 +333,8 @@
 	}
 
 	purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields,
-			_("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, NULL);
+			_("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL,
+			NULL, NULL, NULL,
+			NULL);
 }
 
--- a/finch/gntpounce.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntpounce.c	Thu Apr 26 12:25:49 2007 +0000
@@ -647,7 +647,9 @@
 	pouncer = purple_account_get_username(account);
 	pouncee = purple_pounce_get_pouncee(pounce);
 	buf = g_strdup_printf(_("Are you sure you want to delete the pounce on %s for %s?"), pouncee, pouncer);
-	purple_request_action(pounce, NULL, buf, NULL, 0, pounce, 2,
+	purple_request_action(pounce, NULL, buf, NULL, 0,
+						account, pouncee, NULL,
+						pounce, 2,
 						_("Delete"), pounces_manager_delete_confirm_cb,
 						_("Cancel"), NULL);
 	g_free(buf);
--- a/finch/gntprefs.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntprefs.c	Thu Apr 26 12:25:49 2007 +0000
@@ -232,6 +232,8 @@
 	add_pref_group(fields, _("Idle"), idle);
 
 	purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields,
-			_("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings, NULL);
+			_("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings,
+			NULL, NULL, NULL,
+			NULL);
 }
 
--- a/finch/gntrequest.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntrequest.c	Thu Apr 26 12:25:49 2007 +0000
@@ -115,6 +115,7 @@
 		gboolean multiline, gboolean masked, gchar *hint,
 		const char *ok_text, GCallback ok_cb,
 		const char *cancel_text, GCallback cancel_cb,
+		PurpleAccount *account, const char *who, PurpleConversation *conv,
 		void *user_data)
 {
 	GntWidget *window, *box, *entry;
@@ -170,6 +171,7 @@
 		const char *secondary, unsigned int default_value,
 		const char *ok_text, GCallback ok_cb,
 		const char *cancel_text, GCallback cancel_cb,
+		PurpleAccount *account, const char *who, PurpleConversation *conv,
 		void *user_data, va_list choices)
 {
 	GntWidget *window, *combo, *box;
@@ -212,6 +214,7 @@
 static void*
 finch_request_action(const char *title, const char *primary,
 		const char *secondary, unsigned int default_value,
+		PurpleAccount *account, const char *who, PurpleConversation *conv,
 		void *user_data, size_t actioncount,
 		va_list actions)
 {
@@ -339,6 +342,7 @@
 		const char *secondary, PurpleRequestFields *allfields,
 		const char *ok, GCallback ok_cb,
 		const char *cancel, GCallback cancel_cb,
+		PurpleAccount *account, const char *who, PurpleConversation *conv,
 		void *userdata)
 {
 	GntWidget *window, *box;
@@ -576,6 +580,7 @@
 finch_request_file(const char *title, const char *filename,
 				gboolean savedialog,
 				GCallback ok_cb, GCallback cancel_cb,
+				PurpleAccount *account, const char *who, PurpleConversation *conv,
 				void *user_data)
 {
 	GntWidget *window = gnt_file_sel_new();
--- a/finch/gntstatus.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/finch/gntstatus.c	Thu Apr 26 12:25:49 2007 +0000
@@ -135,8 +135,11 @@
 	ask = g_strdup_printf(_("Are you sure you want to delete \"%s\""),
 			purple_savedstatus_get_title(saved));
 
-	purple_request_action(saved, _("Delete Status"), ask, NULL, 0, saved, 2,
-			_("Delete"), really_delete_status, _("Cancel"), NULL);
+	purple_request_action(saved, _("Delete Status"), ask, NULL, 0,
+			NULL, NULL, NULL,
+			saved, 2,
+			_("Delete"), really_delete_status,
+			_("Cancel"), NULL);
 	g_free(ask);
 }
 
--- a/libpurple/account.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/account.c	Thu Apr 26 12:25:49 2007 +0000
@@ -968,6 +968,7 @@
                         fields,
                         _("OK"), ok_cb,
                         _("Cancel"), cancel_cb,
+						account, NULL, NULL,
                         user_data);
 	g_free(primary);
 }
@@ -1217,6 +1218,7 @@
 						fields,
 						_("OK"), G_CALLBACK(change_password_cb),
 						_("Cancel"), NULL,
+						account, NULL, NULL,
 						account);
 }
 
@@ -1250,7 +1252,9 @@
 					   TRUE, FALSE, ((gc != NULL) &&
 					   (gc->flags & PURPLE_CONNECTION_HTML) ? "html" : NULL),
 					   _("Save"), G_CALLBACK(set_user_info_cb),
-					   _("Cancel"), NULL, account);
+					   _("Cancel"), NULL,
+					   account, NULL, NULL,
+					   account);
 }
 
 void
--- a/libpurple/conversation.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/conversation.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1159,9 +1159,11 @@
 	data[0] = conv;
 	data[1] = (gpointer)message;
 
-	purple_request_action(conv, NULL, _("Send Message"), text, 0, data, 2,
-	                    _("_Send Message"), G_CALLBACK(purple_conv_send_confirm_cb),
-	                    _("Cancel"), NULL);
+	purple_request_action(conv, NULL, _("Send Message"), text, 0,
+						  purple_conversation_get_account(conv), NULL, conv,
+						  data, 2,
+						  _("_Send Message"), G_CALLBACK(purple_conv_send_confirm_cb),
+						  _("Cancel"), NULL);
 }
 
 void
--- a/libpurple/ft.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/ft.c	Thu Apr 26 12:25:49 2007 +0000
@@ -307,7 +307,9 @@
 	purple_request_file(xfer, NULL, purple_xfer_get_filename(xfer),
 					  (purple_xfer_get_type(xfer) == PURPLE_XFER_RECEIVE),
 					  G_CALLBACK(purple_xfer_choose_file_ok_cb),
-					  G_CALLBACK(purple_xfer_choose_file_cancel_cb), xfer);
+					  G_CALLBACK(purple_xfer_choose_file_cancel_cb),
+					  purple_xfer_get_account(xfer), xfer->who, NULL,
+					  xfer);
 
 	return 0;
 }
@@ -353,7 +355,9 @@
 								 xfer->who, xfer->message, 0, time(NULL));
 
 		purple_request_accept_cancel(xfer, NULL, buf, NULL,
-								  PURPLE_DEFAULT_ACTION_NONE, xfer,
+								  PURPLE_DEFAULT_ACTION_NONE,
+								  xfer->account, xfer->who, NULL,
+								  xfer,
 								  G_CALLBACK(purple_xfer_choose_file),
 								  G_CALLBACK(cancel_recv_cb));
 
@@ -394,7 +398,9 @@
 					   purple_xfer_get_remote_ip(xfer),
 					   purple_xfer_get_remote_port(xfer));
 	purple_request_accept_cancel(xfer, NULL, buf, buf2,
-							   PURPLE_DEFAULT_ACTION_NONE, xfer,
+							   PURPLE_DEFAULT_ACTION_NONE,
+							   xfer->account, xfer->who, NULL,
+							   xfer,
 							   G_CALLBACK(ask_accept_ok),
 							   G_CALLBACK(ask_accept_cancel));
 	g_free(buf);
--- a/libpurple/plugins/autoaccept.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/plugins/autoaccept.c	Thu Apr 26 12:25:49 2007 +0000
@@ -162,10 +162,13 @@
 	purple_request_choice(plugin, _("Set Autoaccept Setting"), message,
 						NULL, purple_blist_node_get_int(node, "autoaccept"),
 						_("_Save"), G_CALLBACK(save_cb),
-						_("_Cancel"), NULL, node,
+						_("_Cancel"), NULL,
+						NULL, NULL, NULL,
+						node,
 						_("Ask"), FT_ASK,
 						_("Auto Accept"), FT_ACCEPT,
 						_("Auto Reject"), FT_REJECT,
+						NULL, purple_contact_get_alias((PurpleContact *)node), NULL,
 						NULL);
 	g_free(message);
 }
--- a/libpurple/plugins/buddynote.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/plugins/buddynote.c	Thu Apr 26 12:25:49 2007 +0000
@@ -49,6 +49,7 @@
 					   note, TRUE, FALSE, "html",
 					   _("Save"), G_CALLBACK(do_it_cb),
 					   _("Cancel"), G_CALLBACK(dont_do_it_cb),
+					   NULL, NULL, NULL,
 					   node);
 }
 
--- a/libpurple/plugins/idle.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/plugins/idle.c	Thu Apr 26 12:25:49 2007 +0000
@@ -168,6 +168,7 @@
 			request,
 			_("_Set"), G_CALLBACK(idle_action_ok),
 			_("_Cancel"), NULL,
+			NULL, NULL, NULL,
 			NULL);
 }
 
@@ -201,6 +202,7 @@
 			request,
 			_("_Unset"), G_CALLBACK(unidle_action_ok),
 			_("_Cancel"), NULL,
+			NULL, NULL, NULL,
 			NULL);
 }
 
@@ -226,6 +228,7 @@
 			request,
 			_("_Set"), G_CALLBACK(idle_all_action_ok),
 			_("_Cancel"), NULL,
+			NULL, NULL, NULL,
 			NULL);
 }
 
--- a/libpurple/plugins/offlinemsg.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/plugins/offlinemsg.c	Thu Apr 26 12:25:49 2007 +0000
@@ -155,7 +155,9 @@
 	
 		purple_request_action(handle, _("Offline Message"), ask,
 					_("You can edit/delete the pounce from the `Buddy Pounces' dialog"),
-					1, offline, 2,
+					1,
+					offline->account, offline->who, offline->conv,
+					offline, 2,
 					_("Yes"), record_pounce,
 					_("No"), cancel_poune);
 		g_free(ask);
--- a/libpurple/plugins/perl/common/Request.xs	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/plugins/perl/common/Request.xs	Thu Apr 26 12:25:49 2007 +0000
@@ -106,7 +106,7 @@
 	gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len));
 	g_free(basename);
 
-	RETVAL = purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), gpr);
+	RETVAL = purple_request_input(handle, title, primary, secondary, default_value, multiline, masked, hint, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);
 OUTPUT:
 	RETVAL
 
@@ -130,7 +130,7 @@
 	gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len));
 	g_free(basename);
 
-	RETVAL = purple_request_file(handle, title, filename, savedialog, G_CALLBACK(purple_perl_request_ok_cb), G_CALLBACK(purple_perl_request_cancel_cb), gpr);
+	RETVAL = purple_request_file(handle, title, filename, savedialog, G_CALLBACK(purple_perl_request_ok_cb), G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);
 OUTPUT:
 	RETVAL
 
@@ -157,7 +157,7 @@
 	gpr->cancel_cb = g_strdup_printf("Purple::Script::%s::%s", basename, SvPV(cancel_cb, len));
 	g_free(basename);
 
-	RETVAL = purple_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), gpr);
+	RETVAL = purple_request_fields(handle, title, primary, secondary, fields, ok_text, G_CALLBACK(purple_perl_request_ok_cb), cancel_text, G_CALLBACK(purple_perl_request_cancel_cb), NULL, NULL, NULL, gpr);
 OUTPUT:
 	RETVAL
 
--- a/libpurple/protocols/gg/gg.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/gg/gg.c	Thu Apr 26 12:25:49 2007 +0000
@@ -334,7 +334,9 @@
 	PurpleConnection *gc = (PurpleConnection *)action->context;
 
 	purple_request_file(action, _("Save buddylist..."), NULL, TRUE,
-			G_CALLBACK(ggp_callback_buddylist_save_ok), NULL, gc);
+			G_CALLBACK(ggp_callback_buddylist_save_ok), NULL,
+			purple_connection_get_account(gc), NULL, NULL,
+			gc);
 }
 /* }}} */
 
@@ -346,7 +348,9 @@
 	PurpleConnection *gc = (PurpleConnection *)action->context;
 
 	purple_request_file(action, "Load buddylist from file...", NULL, FALSE,
-			G_CALLBACK(ggp_callback_buddylist_load_ok), NULL, gc);
+			G_CALLBACK(ggp_callback_buddylist_load_ok), NULL,
+			purple_connection_get_account(gc), NULL, NULL,
+			gc);
 }
 /* }}} */
 
@@ -496,6 +500,7 @@
 		fields,
 		_("OK"), G_CALLBACK(ggp_callback_register_account_ok),
 		_("Cancel"), G_CALLBACK(ggp_callback_register_account_cancel),
+		purple_connection_get_account(gc), NULL, NULL,
 		gc);
 }
 /* }}} */
@@ -654,6 +659,7 @@
 		fields,
 		_("OK"), G_CALLBACK(ggp_callback_find_buddies),
 		_("Cancel"), NULL,
+		purple_connection_get_account(gc), NULL, NULL,
 		gc);
 }
 /* }}} */
@@ -789,7 +795,9 @@
 		_("Change Gadu-Gadu Password"),
 		msg,
 		fields, _("OK"), G_CALLBACK(ggp_callback_change_passwd_ok),
-		_("Cancel"), NULL, gc);
+		_("Cancel"), NULL,
+		purple_connection_get_account(gc), NULL, NULL,
+		gc);
 
 	g_free(msg);
 }
@@ -868,7 +876,9 @@
 			msg,
 			fields,
 			_("Add"), G_CALLBACK(ggp_callback_add_to_chat_ok),
-			_("Cancel"), NULL, gc);
+			_("Cancel"), NULL,
+			purple_connection_get_account(gc), NULL, NULL,			  
+			gc);
 	g_free(msg);
 }
 /* }}} */
--- a/libpurple/protocols/jabber/auth.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/auth.c	Thu Apr 26 12:25:49 2007 +0000
@@ -480,7 +480,9 @@
 			purple_request_yes_no(js->gc, _("Plaintext Authentication"),
 					_("Plaintext Authentication"),
 					_("This server requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"),
-					2, js->gc->account, allow_plaintext_auth,
+					2,
+					purple_connection_get_account(js->gc), NULL, NULL,
+					purple_connection_get_account(js->gc), allow_plaintext_auth,
 					disallow_plaintext_auth);
 			return;
 		}
@@ -562,7 +564,9 @@
 				purple_request_yes_no(js->gc, _("Plaintext Authentication"),
 						_("Plaintext Authentication"),
 						_("This server requires plaintext authentication over an unencrypted connection.  Allow this and continue authentication?"),
-						2, js->gc->account, allow_plaintext_auth,
+						2,
+						purple_connection_get_account(js->gc), NULL, NULL,
+						purple_connection_get_account(js->gc), allow_plaintext_auth,
 						disallow_plaintext_auth);
 				return;
 			}
--- a/libpurple/protocols/jabber/buddy.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/buddy.c	Thu Apr 26 12:25:49 2007 +0000
@@ -586,6 +586,7 @@
 						fields,
 						_("Save"), G_CALLBACK(jabber_format_info),
 						_("Cancel"), NULL,
+						purple_connection_get_account(gc), NULL, NULL,
 						gc);
 }
 
@@ -1765,7 +1766,9 @@
 		purple_request_fields(js->gc, _("Search for Jabber users"),
 				_("Search for Jabber users"), instructions, fields,
 				_("Search"), G_CALLBACK(user_search_cb),
-				_("Cancel"), G_CALLBACK(user_search_cancel_cb), usi);
+				_("Cancel"), G_CALLBACK(user_search_cancel_cb),
+				NULL, NULL, NULL,
+				usi);
 
 		g_free(instructions);
 	}
@@ -1799,7 +1802,9 @@
 			js->user_directories ? js->user_directories->data : "users.jabber.org",
 			FALSE, FALSE, NULL,
 			_("Search Directory"), PURPLE_CALLBACK(jabber_user_search_ok),
-			_("Cancel"), NULL, js);
+			_("Cancel"), NULL,
+			NULL, NULL, NULL,
+			js);
 }
 
 
--- a/libpurple/protocols/jabber/chat.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/chat.c	Thu Apr 26 12:25:49 2007 +0000
@@ -785,7 +785,9 @@
 			js->chat_servers ? js->chat_servers->data : "conference.jabber.org",
 			FALSE, FALSE, NULL,
 			_("Find Rooms"), PURPLE_CALLBACK(roomlist_ok_cb),
-			_("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb), js);
+			_("Cancel"), PURPLE_CALLBACK(roomlist_cancel_cb),
+			purple_connection_get_account(gc), NULL, NULL,			 
+			js);
 
 	return js->roomlist;
 }
--- a/libpurple/protocols/jabber/jabber.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Thu Apr 26 12:25:49 2007 +0000
@@ -871,7 +871,9 @@
 		purple_request_fields(js->gc, _("Register New Jabber Account"),
 				_("Register New Jabber Account"), instructions, fields,
 				_("Register"), G_CALLBACK(jabber_register_cb),
-				_("Cancel"), G_CALLBACK(jabber_register_cancel_cb), js);
+				_("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
+				purple_connection_get_account(js->gc), NULL, NULL,
+				js);
 
 		g_free(instructions);
 	}
@@ -1366,7 +1368,9 @@
 	purple_request_fields(js->gc, _("Change Jabber Password"),
 			_("Change Jabber Password"), _("Please enter your new password"),
 			fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
-			_("Cancel"), NULL, js);
+			_("Cancel"), NULL,
+			purple_connection_get_account(gc), NULL, NULL,			  
+			js);
 }
 
 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
--- a/libpurple/protocols/jabber/presence.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/presence.c	Thu Apr 26 12:25:49 2007 +0000
@@ -358,10 +358,11 @@
 										_("You are creating a new room.  Would"
 											" you like to configure it, or"
 											" accept the default settings?"),
-										1, chat, 2, _("_Configure Room"),
-										G_CALLBACK(jabber_chat_request_room_configure),
-										_("_Accept Defaults"),
-										G_CALLBACK(jabber_chat_create_instant_room));
+										/* Default Action */ 1,
+										purple_connection_get_account(js->gc), NULL, chat->conv,
+										chat, 2,
+										_("_Configure Room"), G_CALLBACK(jabber_chat_request_room_configure),
+										_("_Accept Defaults"), G_CALLBACK(jabber_chat_create_instant_room));
 						}
 					}
 				}
--- a/libpurple/protocols/jabber/xdata.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/jabber/xdata.c	Thu Apr 26 12:25:49 2007 +0000
@@ -334,7 +334,9 @@
 
 	handle = purple_request_fields(js->gc, title, title, instructions, fields,
 			_("OK"), G_CALLBACK(jabber_x_data_ok_cb),
-			_("Cancel"), G_CALLBACK(jabber_x_data_cancel_cb), data);
+			_("Cancel"), G_CALLBACK(jabber_x_data_cancel_cb),
+			purple_connection_get_account(js->gc), /* XXX Do we have a who here? */ NULL, NULL,
+			data);
 
 	g_free(title);
 	g_free(instructions);
--- a/libpurple/protocols/msn/dialog.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/msn/dialog.c	Thu Apr 26 12:25:49 2007 +0000
@@ -128,6 +128,7 @@
 	}
 
 	purple_request_action(gc, NULL, msg, reason, PURPLE_DEFAULT_ACTION_NONE, 
+						purple_connection_get_account(gc), data->who, NULL,
 						data, 2,
 						_("Yes"), G_CALLBACK(msn_add_cb),
 						_("No"), G_CALLBACK(msn_rem_cb));
--- a/libpurple/protocols/msn/msn.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/msn/msn.c	Thu Apr 26 12:25:49 2007 +0000
@@ -247,7 +247,9 @@
 						 "see you as."),
 					   purple_connection_get_display_name(gc), FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(msn_act_id),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void
@@ -262,7 +264,9 @@
 	purple_request_input(gc, NULL, _("Set your home phone number."), NULL,
 					   msn_user_get_home_phone(session->user), FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(msn_set_home_phone_cb),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void
@@ -277,7 +281,9 @@
 	purple_request_input(gc, NULL, _("Set your work phone number."), NULL,
 					   msn_user_get_work_phone(session->user), FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(msn_set_work_phone_cb),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void
@@ -292,7 +298,9 @@
 	purple_request_input(gc, NULL, _("Set your mobile phone number."), NULL,
 					   msn_user_get_mobile_phone(session->user), FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(msn_set_mobile_phone_cb),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void
@@ -306,7 +314,9 @@
 						_("Do you want to allow or disallow people on "
 						  "your buddy list to send you MSN Mobile pages "
 						  "to your cell phone or other mobile device?"),
-						-1, gc, 3,
+						-1, 
+						purple_connection_get_account(gc), NULL, NULL,
+						gc, 3,
 						_("Allow"), G_CALLBACK(enable_msn_pages_cb),
 						_("Disallow"), G_CALLBACK(disable_msn_pages_cb),
 						_("Cancel"), NULL);
@@ -354,6 +364,7 @@
 					   NULL, TRUE, FALSE, NULL,
 					   _("Page"), G_CALLBACK(send_to_mobile_cb),
 					   _("Close"), G_CALLBACK(close_mobile_page_cb),
+					   purple_connection_get_account(gc), purple_buddy_get_name(buddy), NULL,
 					   data);
 }
 
--- a/libpurple/protocols/novell/novell.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/novell/novell.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1911,7 +1911,9 @@
 	/* Prompt the user */
 	gc = purple_account_get_connection(user->client_data);
 	purple_request_action(gc, title, primary, secondary,
-						PURPLE_DEFAULT_ACTION_NONE, parms, 2,
+						PURPLE_DEFAULT_ACTION_NONE,
+						purple_connection_get_account(gc), name, NULL,
+						parms, 2,
 						_("Yes"), G_CALLBACK(_join_conference_cb),
 						_("No"), G_CALLBACK(_reject_conference_cb));
 
--- a/libpurple/protocols/oscar/oscar.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/oscar/oscar.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1432,6 +1432,7 @@
 					   FALSE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(purple_parse_auth_securid_request_yes_cb),
 					   _("_Cancel"), G_CALLBACK(purple_parse_auth_securid_request_no_cb),
+					   account, NULL, NULL,
 					   gc);
 	g_free(primary);
 
@@ -2255,6 +2256,7 @@
 					   NULL, _("Please authorize me!"), TRUE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(purple_auth_request),
 					   _("_Cancel"), G_CALLBACK(purple_auth_dontrequest),
+					   purple_connection_get_account(gc), name, NULL,
 					   data);
 }
 
@@ -2301,6 +2303,7 @@
 					   NULL, _("No reason given."), TRUE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(purple_auth_dontgrant),
 					   _("_Cancel"), G_CALLBACK(oscar_free_name_data),
+					   purple_connection_get_account(data->gc), data->name, NULL,
 					   data);
 }
 
@@ -2485,7 +2488,9 @@
 					purple_request_action(gc, NULL, message,
 										_("Do you want to add this buddy "
 										  "to your buddy list?"),
-										PURPLE_DEFAULT_ACTION_NONE, data, 2,
+										PURPLE_DEFAULT_ACTION_NONE,
+										purple_connection_get_account(gc), data->name, NULL,
+										data, 2,
 										_("_Add"), G_CALLBACK(purple_icq_buddyadd),
 										_("_Decline"), G_CALLBACK(oscar_free_name_data));
 					g_free(message);
@@ -5149,6 +5154,7 @@
 	purple_debug_info("oscar",
 			   "ssi: %s has given you permission to add him to your buddy list\n", sn);
 
+	/* XXX Should data->nick store the alias and nombre just have the sn? -evands */
 	buddy = purple_find_buddy(gc->account, sn);
 	if (buddy && (purple_buddy_get_alias_only(buddy)))
 		nombre = g_strdup_printf("%s (%s)", sn, purple_buddy_get_alias_only(buddy));
@@ -5162,7 +5168,9 @@
 	data->nick = NULL;
 
 	purple_request_yes_no(gc, NULL, _("Authorization Given"), dialog_msg,
-						PURPLE_DEFAULT_ACTION_NONE, data,
+						PURPLE_DEFAULT_ACTION_NONE,
+						purple_connection_get_account(gc), sn, NULL,
+						data,
 						G_CALLBACK(purple_icq_buddyadd),
 						G_CALLBACK(oscar_free_name_data));
 
@@ -5857,6 +5865,7 @@
 					   comment_utf8, TRUE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(oscar_ssi_editcomment),
 					   _("_Cancel"), G_CALLBACK(oscar_free_name_data),
+					   purple_connection_get_account(gc), data->name, NULL,
 					   data);
 	g_free(title);
 
@@ -5906,7 +5915,9 @@
 			_("Because this reveals your IP address, it "
 			  "may be considered a security risk.  Do you "
 			  "wish to continue?"),
-			0, data, 2,
+			0,
+			purple_connection_get_account(gc), data->who, NULL,
+			data, 2,
 			_("C_onnect"), G_CALLBACK(oscar_ask_directim_yes_cb),
 			_("_Cancel"), G_CALLBACK(oscar_ask_directim_no_cb));
 	g_free(buf);
@@ -6061,7 +6072,9 @@
 	purple_request_fields(gc, _("ICQ Privacy Options"), _("ICQ Privacy Options"),
 						NULL, fields,
 						_("OK"), G_CALLBACK(oscar_icq_privacy_opts),
-						_("Cancel"), NULL, gc);
+						_("Cancel"), NULL,
+						purple_connection_get_account(gc), NULL, NULL,
+						gc);
 }
 
 static void oscar_format_screenname(PurpleConnection *gc, const char *nick) {
@@ -6133,6 +6146,7 @@
 					   FALSE, FALSE, NULL,
 					   _("_OK"), G_CALLBACK(oscar_change_email),
 					   _("_Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
 					   gc);
 }
 
@@ -6201,7 +6215,9 @@
 						 "searching for."),
 					   NULL, FALSE, FALSE, NULL,
 					   _("_Search"), G_CALLBACK(search_by_email_cb),
-					   _("_Cancel"), NULL, gc);
+					   _("_Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void oscar_show_set_info(PurplePluginAction *action)
--- a/libpurple/protocols/oscar/peer.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/oscar/peer.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1016,7 +1016,9 @@
 						  "Images.  Because your IP address will be "
 						  "revealed, this may be considered a privacy "
 						  "risk."),
-						PURPLE_DEFAULT_ACTION_NONE, conn, 2,
+						PURPLE_DEFAULT_ACTION_NONE,
+						account, sn, NULL,
+						conn, 2,
 						_("_Connect"), G_CALLBACK(peer_connection_got_proposition_yes_cb),
 						_("Cancel"), G_CALLBACK(peer_connection_got_proposition_no_cb));
 	}
--- a/libpurple/protocols/qq/buddy_info.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/buddy_info.c	Thu Apr 26 12:25:49 2007 +0000
@@ -482,6 +482,7 @@
 			_("Modify my information"), NULL, fields,
 			_("Update my information"), G_CALLBACK(modify_info_ok_cb),
 			_("Cancel"), G_CALLBACK(modify_info_cancel_cb),
+			purple_connection_get_account(gc), NULL, NULL,
 			mid);
 	}
 }
--- a/libpurple/protocols/qq/buddy_opt.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/buddy_opt.c	Thu Apr 26 12:25:49 2007 +0000
@@ -191,6 +191,7 @@
 	gchar *msg1, *msg2;
 	PurpleConnection *gc;
 	gc_and_uid *g2;
+	gchar *nombre;
 
 	g_return_if_fail(g != NULL);
 
@@ -207,9 +208,13 @@
 	msg1 = g_strdup_printf(_("You rejected %d's request"), uid);
 	msg2 = g_strdup(_("Input your reason:"));
 
+	nombre = uid_to_purple_name(uid);
 	purple_request_input(gc, _("Reject request"), msg1, msg2,
 			   _("Sorry, you are not my type..."), TRUE, FALSE,
-			   NULL, _("Reject"), G_CALLBACK(_qq_reject_add_request_real), _("Cancel"), NULL, g2);
+			   NULL, _("Reject"), G_CALLBACK(_qq_reject_add_request_real), _("Cancel"), NULL,
+			   purple_connection_get_account(gc), nombre, NULL,
+			   g2);
+	g_free(nombre);
 }
 
 void qq_add_buddy_with_gc_and_uid(gc_and_uid *g)
@@ -345,6 +350,7 @@
 	PurpleBuddy *b;
 	gc_and_uid *g;
 	qq_add_buddy_request *req;
+	gchar *nombre;
 
 	g_return_if_fail(buf != NULL && buf_len != 0);
 
@@ -386,7 +392,8 @@
 
 		if (strtol(reply, NULL, 10) > 0) {	/* need auth */
 			purple_debug(PURPLE_DEBUG_WARNING, "QQ", "Add buddy attempt fails, need authentication\n");
-			b = purple_find_buddy(gc->account, uid_to_purple_name(for_uid));
+			nombre = uid_to_purple_name(for_uid);
+			b = purple_find_buddy(gc->account, nombre);
 			if (b != NULL)
 				purple_blist_remove_buddy(b);
 			g = g_new0(gc_and_uid, 1);
@@ -394,13 +401,16 @@
 			g->uid = for_uid;
 			msg = g_strdup_printf(_("User %d needs authentication"), for_uid);
 			purple_request_input(gc, NULL, msg,
-					   _("Input request here"),
+					   _("Input request here"), /* TODO: Awkward string to fix post string freeze - standardize auth dialogues? -evands */
 					   _("Would you be my friend?"),
 					   TRUE, FALSE, NULL, _("Send"),
 					   G_CALLBACK
 					   (_qq_send_packet_add_buddy_auth_with_gc_and_uid),
-					   _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid), g);
+					   _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid),
+					   purple_connection_get_account(gc), nombre, NULL,
+					   g);
 			g_free(msg);
+			g_free(nombre);
 		} else {	/* add OK */
 			qq_add_buddy_by_recv_packet(gc, for_uid, TRUE, TRUE);
 			msg = g_strdup_printf(_("You have added %d in buddy list"), for_uid);
--- a/libpurple/protocols/qq/group.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/group.c	Thu Apr 26 12:25:49 2007 +0000
@@ -122,6 +122,7 @@
 			   NULL, FALSE, FALSE, NULL, 
 			   _("Search"), G_CALLBACK(_qq_group_search_callback), 
 			   _("Cancel"), G_CALLBACK(_qq_group_search_cancel_callback), 
+			   purple_connection_get_account(gc), NULL, NULL,
 			   gc);
 
 	return qd->roomlist;
--- a/libpurple/protocols/qq/group_im.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/group_im.c	Thu Apr 26 12:25:49 2007 +0000
@@ -104,6 +104,7 @@
 	guint8 group_type;
 	gchar *reason_utf8, *msg, *reason;
 	group_member_opt *g;
+	gchar *nombre;
 
 	g_return_if_fail(internal_group_id > 0 && data != NULL && len > 0);
 
@@ -128,9 +129,13 @@
 	g->internal_group_id = internal_group_id;
 	g->member = user_uid;
 
+	nombre = uid_to_purple_name(user_uid);
+
 	purple_request_action(gc, _("QQ Qun Operation"),
 			    msg, reason,
-			    2, g, 3,
+			    2,
+				purple_connection_get_account(gc), nombre, NULL,
+				g, 3,
 			    _("Approve"),
 			    G_CALLBACK
 			    (qq_group_approve_application_with_struct),
@@ -139,6 +144,7 @@
 			    (qq_group_reject_application_with_struct),
 			    _("Search"), G_CALLBACK(qq_group_search_application_with_struct));
 
+	g_free(nombre);
 	g_free(reason);
 	g_free(msg);
 	g_free(reason_utf8);
--- a/libpurple/protocols/qq/group_join.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/group_join.c	Thu Apr 26 12:25:49 2007 +0000
@@ -135,7 +135,9 @@
 			   _("Would you be my friend?"), TRUE, FALSE, NULL,
 			   _("Send"),
 			   G_CALLBACK(_qq_group_join_auth_with_gc_and_id),
-			   _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid), g);
+			   _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid),
+			   purple_connection_get_account(gc), group->group_name_utf8, NULL,
+			   g);
 	g_free(msg);
 }
 
@@ -356,7 +358,9 @@
 			    _("Are you sure to exit this Qun?"),
 			    _
 			    ("Note, if you are the creator, \nthis operation will eventually remove this Qun."),
-			    1, g, 2, _("Cancel"),
+			    1,
+				purple_connection_get_account(gc), NULL, NULL,
+			    g, 2, _("Cancel"),
 			    G_CALLBACK(qq_do_nothing_with_gc_and_uid),
 			    _("Go ahead"), G_CALLBACK(_qq_group_exit_with_gc_and_id));
 }
--- a/libpurple/protocols/qq/group_opt.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/group_opt.c	Thu Apr 26 12:25:49 2007 +0000
@@ -120,29 +120,33 @@
 	g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0);
 
 	qq_send_packet_get_info(g->gc, g->member, TRUE);	/* we wanna see window */
-	purple_request_action
-	    (g->gc, NULL, _("Do you wanna approve the request?"), "", 2, g,
-	     2, _("Reject"),
-	     G_CALLBACK(qq_group_reject_application_with_struct),
-	     _("Approve"), G_CALLBACK(qq_group_approve_application_with_struct));
+	purple_request_action(g->gc, NULL, _("Do you wanna approve the request?"), "", 2,
+					purple_connection_get_account(g->gc), NULL, NULL,
+					g, 2,
+					_("Reject"), G_CALLBACK(qq_group_reject_application_with_struct),
+					_("Approve"), G_CALLBACK(qq_group_approve_application_with_struct));
 }
 
 void qq_group_reject_application_with_struct(group_member_opt *g)
 {
-	gchar *msg1, *msg2;
+	gchar *msg1, *msg2, *nombre;
 	g_return_if_fail(g != NULL && g->gc != NULL && g->member > 0);
 
 	msg1 = g_strdup_printf(_("You rejected %d's request"), g->member);
 	msg2 = g_strdup(_("Input your reason:"));
 
-	purple_request_input(g->gc, NULL, msg1, msg2,
-			   _("Sorry, you are not my type..."), TRUE, FALSE,
-			   NULL, _("Send"),
-			   G_CALLBACK(_qq_group_reject_application_real),
-			   _("Cancel"), G_CALLBACK(_qq_group_do_nothing_with_struct), g);
+	nombre = uid_to_purple_name(g->member);
+	purple_request_input(g->gc, /* title */ NULL, msg1, msg2,
+			   _("Sorry, you are not my type..."), /* multiline */ TRUE, /* masked */ FALSE,
+			   /* hint */ NULL,
+			   _("Send"), G_CALLBACK(_qq_group_reject_application_real),
+			   _("Cancel"), G_CALLBACK(_qq_group_do_nothing_with_struct),
+			   purple_connection_get_account(g->gc), nombre, NULL,
+			   g);
 
 	g_free(msg1);
 	g_free(msg2);
+	g_free(nombre);
 }
 
 void qq_group_approve_application_with_struct(group_member_opt *g)
@@ -387,8 +391,10 @@
 			    _("You have successfully created a Qun"),
 			    _
 			    ("Would you like to set up the Qun details now?"),
-			    1, g, 2, _("Setup"),
-			    G_CALLBACK(qq_group_setup_with_gc_and_uid),
+			    1,
+				purple_connection_get_account(gc), NULL, NULL,
+				g, 2,
+				_("Setup"), G_CALLBACK(qq_group_setup_with_gc_and_uid),
 			    _("Cancel"), G_CALLBACK(qq_do_nothing_with_gc_and_uid));
 }
 
--- a/libpurple/protocols/qq/sys_msg.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/qq/sys_msg.c	Thu Apr 26 12:25:49 2007 +0000
@@ -72,6 +72,7 @@
 {
 	PurpleConnection *gc;
 	guint32 uid;
+	gchar *nombre;
 
 	g_return_if_fail(g != NULL);
 
@@ -80,17 +81,23 @@
 	g_return_if_fail(gc != 0 && uid != 0);
 
 	qq_send_packet_get_info(gc, uid, TRUE);	/* we wanna see window */
+
+	nombre = uid_to_purple_name(uid);
+	/* TODO: 'wanna' is not an appropriate word for this string. Fix after string freeze. */
 	purple_request_action
-	    (gc, NULL, _("Do you wanna approve the request?"), "", 2, g, 2,
-	     _("Reject"),
-	     G_CALLBACK(qq_reject_add_request_with_gc_and_uid),
+	    (gc, NULL, _("Do you wanna approve the request?"), "", 2,
+		 purple_connection_get_account(gc), nombre, NULL,
+		 g, 2,
+	     _("Reject"), G_CALLBACK(qq_reject_add_request_with_gc_and_uid),
 	     _("Approve"), G_CALLBACK(qq_approve_add_request_with_gc_and_uid));
+	g_free(nombre);
 }
 
 static void _qq_search_before_add_with_gc_and_uid(gc_and_uid *g)
 {
 	PurpleConnection *gc;
 	guint32 uid;
+	gchar *nombre;
 
 	g_return_if_fail(g != NULL);
 
@@ -99,9 +106,15 @@
 	g_return_if_fail(gc != 0 && uid != 0);
 
 	qq_send_packet_get_info(gc, uid, TRUE);	/* we wanna see window */
+	/* TODO: 'wanna' is not an appropriate word for this string. Fix after string freeze. */
+	nombre = uid_to_purple_name(uid);
 	purple_request_action
-	    (gc, NULL, _("Do you wanna add this buddy?"), "", 2, g, 2,
-	     _("Cancel"), NULL, _("Add"), G_CALLBACK(qq_add_buddy_with_gc_and_uid));
+	    (gc, NULL, _("Do you wanna add this buddy?"), "", 2,
+		 purple_connection_get_account(gc), nombre, NULL,
+		 g, 2,
+	     _("Cancel"), NULL,
+		 _("Add"), G_CALLBACK(qq_add_buddy_with_gc_and_uid));
+	g_free(nombre);
 }
 
 /* Send ACK if the sys message needs an ACK */
@@ -147,7 +160,7 @@
 	uid = strtol(from, NULL, 10);
 	name = uid_to_purple_name(uid);
 	b = purple_find_buddy(gc->account, name);
-	g_free(name);
+
 	if (b == NULL) {	/* the person is not in my list */
 		g = g_new0(gc_and_uid, 1);
 		g->gc = gc;
@@ -155,10 +168,11 @@
 		message = g_strdup_printf(_("You have been added by %s"), from);
 		_qq_sys_msg_log_write(gc, message, from);
 		purple_request_action(gc, NULL, message,
-				    _("Would like to add him?"), 2, g, 3,
-				    _("Cancel"), NULL, _("Add"),
-				    G_CALLBACK
-				    (qq_add_buddy_with_gc_and_uid),
+				    _("Would like to add him?"), 2,
+					purple_connection_get_account(gc), name, NULL,
+					g, 3,
+				    _("Cancel"), NULL,
+					_("Add"), G_CALLBACK(qq_add_buddy_with_gc_and_uid),
 				    _("Search"), G_CALLBACK(_qq_search_before_add_with_gc_and_uid));
 	} else {
 		message = g_strdup_printf(_("%s has added you [%s]"), from, to);
@@ -166,6 +180,7 @@
 		purple_notify_info(gc, NULL, message, NULL);
 	}
 
+	g_free(name);
 	g_free(message);
 }
 
@@ -219,12 +234,18 @@
 	g->gc = gc;
 	g->uid = uid;
 
+	name = uid_to_purple_name(uid);
+
+	/* TODO: 'wanna' is not an appropriate word for this string. Fix after string freeze */
+	/* TODO: this should go through purple_account_request_authorization() */
 	message = g_strdup_printf(_("%s wanna add you [%s] as friends"), from, to);
 	reason = g_strdup_printf(_("Message: %s"), msg_utf8);
 	_qq_sys_msg_log_write(gc, message, from);
 
 	purple_request_action
-	    (gc, NULL, message, reason, 2, g, 3,
+	    (gc, NULL, message, reason, 2,
+		purple_connection_get_account(gc), name, NULL,
+		 g, 3,
 	     _("Reject"),
 	     G_CALLBACK(qq_reject_add_request_with_gc_and_uid),
 	     _("Approve"),
@@ -234,22 +255,24 @@
 	g_free(message);
 	g_free(reason);
 
-	name = uid_to_purple_name(uid);
+	/* XXX: Is this needed once the above goes through purple_account_request_authorization()? */
 	b = purple_find_buddy(gc->account, name);
-	g_free(name);
 	if (b == NULL) {	/* the person is not in my list  */
 		g2 = g_new0(gc_and_uid, 1);
 		g2->gc = gc;
 		g2->uid = strtol(from, NULL, 10);
 		message = g_strdup_printf(_("%s is not in your buddy list"), from);
 		purple_request_action(gc, NULL, message,
-				    _("Would you like to add him?"), 2, g2,
-				    3, _("Cancel"), NULL, _("Add"),
-				    G_CALLBACK
-				    (qq_add_buddy_with_gc_and_uid),
+				    _("Would you like to add him?"), 2,
+					purple_connection_get_account(gc), name, NULL,
+					g2, 3,
+					_("Cancel"), NULL,
+					_("Add"), G_CALLBACK(qq_add_buddy_with_gc_and_uid),
 				    _("Search"), G_CALLBACK(_qq_search_before_add_with_gc_and_uid));
 		g_free(message);
 	}
+
+	g_free(name);
 }
 
 void qq_process_msg_sys(guint8 *buf, gint buf_len, guint16 seq, PurpleConnection *gc)
--- a/libpurple/protocols/sametime/sametime.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/sametime/sametime.c	Thu Apr 26 12:25:49 2007 +0000
@@ -3387,6 +3387,7 @@
 		      msgA, msg1, fields,
 		      _("Create"), G_CALLBACK(conf_create_prompt_join),
 		      _("Cancel"), G_CALLBACK(conf_create_prompt_cancel),
+			  acct, purple_buddy_get_name(buddy), NULL,
 		      buddy);
   g_free(msg1);
 }
@@ -3472,6 +3473,7 @@
 		      msgA, msg, fields,
 		      _("Invite"), G_CALLBACK(conf_select_prompt_invite),
 		      _("Cancel"), G_CALLBACK(conf_select_prompt_cancel),
+			  acct, purple_buddy_get_name(buddy), NULL,
 		      buddy);
   g_free(msg);
 }
@@ -3642,6 +3644,7 @@
 		     MW_PLUGIN_DEFAULT_HOST, FALSE, FALSE, NULL,
 		     _("Connect"), G_CALLBACK(prompt_host_ok_cb),
 		     _("Cancel"), G_CALLBACK(prompt_host_cancel_cb),
+			 acct, NULL, NULL,
 		     gc);
 
   g_free(msg);
@@ -5210,6 +5213,7 @@
 
   purple_request_file(gc, title, NULL, FALSE,
 		    G_CALLBACK(st_import_action_cb), NULL,
+		    account, NULL, NULL,
 		    gc);
 
   g_free(title);
@@ -5249,6 +5253,7 @@
 
   purple_request_file(gc, title, NULL, TRUE,
 		    G_CALLBACK(st_export_action_cb), NULL,
+			account, NULL, NULL,
 		    gc);
 
   g_free(title);
@@ -5386,6 +5391,7 @@
 		      msgA, msg, fields,
 		      _("Add Group"), G_CALLBACK(remote_group_multi_cb),
 		      _("Cancel"), G_CALLBACK(remote_group_multi_cleanup),
+			  purple_connection_get_account(gc), result->name, NULL,
 		      pd);
 
   g_free(msg);
@@ -5475,6 +5481,7 @@
 		     FALSE, FALSE, NULL,
 		     _("Add"), G_CALLBACK(remote_group_action_cb),
 		     _("Cancel"), NULL,
+			 purple_connection_get_account(gc), NULL, NULL,
 		     gc);
 }
 
@@ -5599,7 +5606,8 @@
 		     FALSE, FALSE, NULL,
 		     _("Search"), G_CALLBACK(search_action_cb),
 		     _("Cancel"), NULL,
-		     gc);
+			 purple_connection_get_account(gc), NULL, NULL,
+			 gc);
 }
 
 
--- a/libpurple/protocols/yahoo/yahoo.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/protocols/yahoo/yahoo.c	Thu Apr 26 12:25:49 2007 +0000
@@ -985,7 +985,9 @@
 	purple_request_input(add_req->gc, NULL, _("Authorization denied message:"),
 			NULL, _("No reason given."), TRUE, FALSE, NULL, 
 			_("OK"), G_CALLBACK(yahoo_buddy_add_deny_cb),
-			_("Cancel"), G_CALLBACK(yahoo_buddy_add_deny_noreason_cb), add_req);
+			_("Cancel"), G_CALLBACK(yahoo_buddy_add_deny_noreason_cb),
+			purple_connection_get_account(add_req->gc), add_req->who, NULL,
+			add_req);
 }
 
 static void yahoo_buddy_added_us(PurpleConnection *gc, struct yahoo_packet *pkt) {
@@ -1890,7 +1892,9 @@
 		g_snprintf(buf, sizeof(buf), _("You have tried to ignore %s, but the "
 					"user is on your buddy list.  Clicking \"Yes\" "
 					"will remove and ignore the buddy."), who);
-		purple_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0, b,
+		purple_request_yes_no(gc, NULL, _("Ignore buddy?"), buf, 0,
+						gc->account, who, NULL,
+						b,
 						G_CALLBACK(ignore_buddy),
 						G_CALLBACK(keep_buddy));
 		break;
@@ -3222,10 +3226,13 @@
 static void yahoo_show_act_id(PurplePluginAction *action)
 {
 	PurpleConnection *gc = (PurpleConnection *) action->context;
+	/* XXX Typo: This should be _("Activate which ID?") - fix after string freeze is over */
 	purple_request_input(gc, NULL, _("Active which ID?"), NULL,
 					   purple_connection_get_display_name(gc), FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(yahoo_act_id),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static void yahoo_show_chat_goto(PurplePluginAction *action)
@@ -3234,7 +3241,9 @@
 	purple_request_input(gc, NULL, _("Join who in chat?"), NULL,
 					   "", FALSE, FALSE, NULL,
 					   _("OK"), G_CALLBACK(yahoo_chat_goto),
-					   _("Cancel"), NULL, gc);
+					   _("Cancel"), NULL,
+					   purple_connection_get_account(gc), NULL, NULL,
+					   gc);
 }
 
 static GList *yahoo_actions(PurplePlugin *plugin, gpointer context) {
--- a/libpurple/request.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/request.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1135,6 +1135,7 @@
 				   gboolean multiline, gboolean masked, gchar *hint,
 				   const char *ok_text, GCallback ok_cb,
 				   const char *cancel_text, GCallback cancel_cb,
+				   PurpleAccount *account, const char *who, PurpleConversation *conv,
 				   void *user_data)
 {
 	PurpleRequestUiOps *ops;
@@ -1155,6 +1156,7 @@
 											 multiline, masked, hint,
 											 ok_text, ok_cb,
 											 cancel_text, cancel_cb,
+											 account, who, conv,
 											 user_data);
 
 		handles = g_list_append(handles, info);
@@ -1170,6 +1172,7 @@
 					const char *secondary, unsigned int default_value,
 					const char *ok_text, GCallback ok_cb,
 					const char *cancel_text, GCallback cancel_cb,
+					PurpleAccount *account, const char *who, PurpleConversation *conv,
 					void *user_data, ...)
 {
 	void *ui_handle;
@@ -1181,7 +1184,8 @@
 	va_start(args, user_data);
 	ui_handle = purple_request_choice_varg(handle, title, primary, secondary,
 					     default_value, ok_text, ok_cb,
-					     cancel_text, cancel_cb, user_data, args);
+					     cancel_text, cancel_cb,
+					     account, who, conv, user_data, args);
 	va_end(args);
 
 	return ui_handle;
@@ -1193,6 +1197,7 @@
 			 unsigned int default_value,
 			 const char *ok_text, GCallback ok_cb,
 			 const char *cancel_text, GCallback cancel_cb,
+			 PurpleAccount *account, const char *who, PurpleConversation *conv,
 			 void *user_data, va_list choices)
 {
 	PurpleRequestUiOps *ops;
@@ -1212,6 +1217,7 @@
 						      default_value,
 						      ok_text, ok_cb,
 						      cancel_text, cancel_cb,
+							  account, who, conv,
 						      user_data, choices);
 
 		handles = g_list_append(handles, info);
@@ -1225,6 +1231,7 @@
 void *
 purple_request_action(void *handle, const char *title, const char *primary,
 					const char *secondary, unsigned int default_action,
+					PurpleAccount *account, const char *who, PurpleConversation *conv,
 					void *user_data, size_t action_count, ...)
 {
 	void *ui_handle;
@@ -1234,8 +1241,8 @@
 
 	va_start(args, action_count);
 	ui_handle = purple_request_action_varg(handle, title, primary, secondary,
-										 default_action, user_data,
-										 action_count, args);
+										 default_action, account, who, conv,
+										 user_data, action_count, args);
 	va_end(args);
 
 	return ui_handle;
@@ -1244,8 +1251,9 @@
 void *
 purple_request_action_varg(void *handle, const char *title,
 						 const char *primary, const char *secondary,
-						 unsigned int default_action, void *user_data,
-						 size_t action_count, va_list actions)
+						 unsigned int default_action,
+						 PurpleAccount *account, const char *who, PurpleConversation *conv,
+						  void *user_data, size_t action_count, va_list actions)
 {
 	PurpleRequestUiOps *ops;
 
@@ -1260,8 +1268,8 @@
 		info->type      = PURPLE_REQUEST_ACTION;
 		info->handle    = handle;
 		info->ui_handle = ops->request_action(title, primary, secondary,
-											  default_action, user_data,
-											  action_count, actions);
+											  default_action, account, who, conv,
+											  user_data, action_count, actions);
 
 		handles = g_list_append(handles, info);
 
@@ -1276,6 +1284,7 @@
 					const char *secondary, PurpleRequestFields *fields,
 					const char *ok_text, GCallback ok_cb,
 					const char *cancel_text, GCallback cancel_cb,
+					PurpleAccount *account, const char *who, PurpleConversation *conv,
 					void *user_data)
 {
 	PurpleRequestUiOps *ops;
@@ -1295,6 +1304,7 @@
 		info->ui_handle = ops->request_fields(title, primary, secondary,
 											  fields, ok_text, ok_cb,
 											  cancel_text, cancel_cb,
+											  account, who, conv,
 											  user_data);
 
 		handles = g_list_append(handles, info);
@@ -1308,7 +1318,9 @@
 void *
 purple_request_file(void *handle, const char *title, const char *filename,
 				  gboolean savedialog,
-				  GCallback ok_cb, GCallback cancel_cb, void *user_data)
+				  GCallback ok_cb, GCallback cancel_cb,
+				  PurpleAccount *account, const char *who, PurpleConversation *conv,
+				  void *user_data)
 {
 	PurpleRequestUiOps *ops;
 
@@ -1321,7 +1333,8 @@
 		info->type      = PURPLE_REQUEST_FILE;
 		info->handle    = handle;
 		info->ui_handle = ops->request_file(title, filename, savedialog,
-											ok_cb, cancel_cb, user_data);
+											ok_cb, cancel_cb,
+											account, who, conv, user_data);
 		handles = g_list_append(handles, info);
 		return info->ui_handle;
 	}
@@ -1331,7 +1344,9 @@
 
 void *
 purple_request_folder(void *handle, const char *title, const char *dirname,
-				  GCallback ok_cb, GCallback cancel_cb, void *user_data)
+				  GCallback ok_cb, GCallback cancel_cb,
+				  PurpleAccount *account, const char *who, PurpleConversation *conv,
+				  void *user_data)
 {
 	PurpleRequestUiOps *ops;
 
@@ -1344,7 +1359,9 @@
 		info->type      = PURPLE_REQUEST_FOLDER;
 		info->handle    = handle;
 		info->ui_handle = ops->request_folder(title, dirname,
-											ok_cb, cancel_cb, user_data);
+											ok_cb, cancel_cb,
+											account, who, conv,
+											user_data);
 		handles = g_list_append(handles, info);
 		return info->ui_handle;
 	}
--- a/libpurple/request.h	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/request.h	Thu Apr 26 12:25:49 2007 +0000
@@ -187,28 +187,34 @@
 						   gboolean multiline, gboolean masked, gchar *hint,
 						   const char *ok_text, GCallback ok_cb,
 						   const char *cancel_text, GCallback cancel_cb,
+						   PurpleAccount *account, const char *who, PurpleConversation *conv,
 						   void *user_data);
 	void *(*request_choice)(const char *title, const char *primary,
 							const char *secondary, unsigned int default_value,
 							const char *ok_text, GCallback ok_cb,
 							const char *cancel_text, GCallback cancel_cb,
+							PurpleAccount *account, const char *who, PurpleConversation *conv,
 							void *user_data, va_list choices);
 	void *(*request_action)(const char *title, const char *primary,
 							const char *secondary, unsigned int default_action,
+							PurpleAccount *account, const char *who, PurpleConversation *conv,
 							void *user_data, size_t action_count,
 							va_list actions);
 	void *(*request_fields)(const char *title, const char *primary,
 							const char *secondary, PurpleRequestFields *fields,
 							const char *ok_text, GCallback ok_cb,
 							const char *cancel_text, GCallback cancel_cb,
+							PurpleAccount *account, const char *who, PurpleConversation *conv,
 							void *user_data);
 	void *(*request_file)(const char *title, const char *filename,
-						  gboolean savedialog, GCallback ok_cb,
-						  GCallback cancel_cb, void *user_data);
+						  gboolean savedialog, GCallback ok_cb, GCallback cancel_cb,
+						  PurpleAccount *account, const char *who, PurpleConversation *conv,
+						  void *user_data);
 	void (*close_request)(PurpleRequestType type, void *ui_handle);
 	void *(*request_folder)(const char *title, const char *dirname,
-						  GCallback ok_cb, GCallback cancel_cb,
-						  void *user_data);
+							GCallback ok_cb, GCallback cancel_cb,
+							PurpleAccount *account, const char *who, PurpleConversation *conv,
+							void *user_data);
 } PurpleRequestUiOps;
 
 typedef void (*PurpleRequestInputCb)(void *, const char *);
@@ -1172,6 +1178,9 @@
  * @param ok_cb         The callback for the @c OK button.
  * @param cancel_text   The text for the @c Cancel button.
  * @param cancel_cb     The callback for the @c Cancel button.
+ * @param account		The PurpleAccount associated with this request, or NULL if none is
+ * @param who			The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv			The PurpleConversation associated with this request, or NULL if none is
  * @param user_data     The data to pass to the callback.
  *
  * @return A UI-specific handle.
@@ -1182,6 +1191,7 @@
 						 gboolean multiline, gboolean masked, gchar *hint,
 						 const char *ok_text, GCallback ok_cb,
 						 const char *cancel_text, GCallback cancel_cb,
+						 PurpleAccount *account, const char *who, PurpleConversation *conv,
 						 void *user_data);
 
 /**
@@ -1198,6 +1208,9 @@
  * @param ok_cb         The callback for the @c OK button.
  * @param cancel_text   The text for the @c Cancel button.
  * @param cancel_cb     The callback for the @c Cancel button.
+ * @param account		The PurpleAccount associated with this request, or NULL if none is
+ * @param who			The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv			The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data     The data to pass to the callback.
  * @param ...           The choices.  This argument list should be
  *                      terminated with a NULL parameter.
@@ -1209,6 +1222,7 @@
 						  unsigned int default_value,
 						  const char *ok_text, GCallback ok_cb,
 						  const char *cancel_text, GCallback cancel_cb,
+						  PurpleAccount *account, const char *who, PurpleConversation *conv,
 						  void *user_data, ...);
 
 /**
@@ -1225,6 +1239,9 @@
  * @param ok_cb         The callback for the @c OK button.
  * @param cancel_text   The text for the @c Cancel button.
  * @param cancel_cb     The callback for the @c Cancel button.
+ * @param account		The PurpleAccount associated with this request, or NULL if none is
+ * @param who			The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv			The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data     The data to pass to the callback.
  * @param choices       The choices.  This argument list should be
  *                      terminated with a @c NULL parameter.
@@ -1236,6 +1253,7 @@
 							   unsigned int default_value,
 							   const char *ok_text, GCallback ok_cb,
 							   const char *cancel_text, GCallback cancel_cb,
+							   PurpleAccount *account, const char *who, PurpleConversation *conv,
 							   void *user_data, va_list choices);
 
 /**
@@ -1250,6 +1268,9 @@
  * @param primary        The main point of the message.
  * @param secondary      The secondary information.
  * @param default_action The default value.
+ * @param account		 The PurpleAccount associated with this request, or NULL if none is
+ * @param who			 The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv			 The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data      The data to pass to the callback.
  * @param action_count   The number of actions.
  * @param ...            A list of actions.  These are pairs of
@@ -1265,6 +1286,7 @@
 void *purple_request_action(void *handle, const char *title,
 						  const char *primary, const char *secondary,
 						  unsigned int default_action,
+						  PurpleAccount *account, const char *who, PurpleConversation *conv,
 						  void *user_data, size_t action_count, ...);
 
 /**
@@ -1279,6 +1301,9 @@
  * @param primary        The main point of the message.
  * @param secondary      The secondary information.
  * @param default_action The default value.
+ * @param account		 The PurpleAccount associated with this request, or NULL if none is
+ * @param who			 The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv			 The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data      The data to pass to the callback.
  * @param action_count   The number of actions.
  * @param actions        A list of actions and callbacks.
@@ -1288,6 +1313,7 @@
 void *purple_request_action_varg(void *handle, const char *title,
 							   const char *primary, const char *secondary,
 							   unsigned int default_action,
+							   PurpleAccount *account, const char *who, PurpleConversation *conv,
 							   void *user_data, size_t action_count,
 							   va_list actions);
 
@@ -1305,6 +1331,9 @@
  * @param ok_cb       The callback for the @c OK button.
  * @param cancel_text The text for the @c Cancel button.
  * @param cancel_cb   The callback for the @c Cancel button.
+ * @param account	  The PurpleAccount associated with this request, or NULL if none is
+ * @param who		  The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv		  The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data   The data to pass to the callback.
  *
  * @return A UI-specific handle.
@@ -1314,6 +1343,7 @@
 						  PurpleRequestFields *fields,
 						  const char *ok_text, GCallback ok_cb,
 						  const char *cancel_text, GCallback cancel_cb,
+						  PurpleAccount *account, const char *who, PurpleConversation *conv,
 						  void *user_data);
 
 /**
@@ -1335,28 +1365,30 @@
  * A wrapper for purple_request_action() that uses @c Yes and @c No buttons.
  */
 #define purple_request_yes_no(handle, title, primary, secondary, \
-							default_action, user_data, yes_cb, no_cb) \
+							default_action, account, who, conv, \
+							user_data, yes_cb, no_cb) \
 	purple_request_action((handle), (title), (primary), (secondary), \
-						(default_action), (user_data), 2, \
+						(default_action), account, who, conv, (user_data), 2, \
 						_("_Yes"), (yes_cb), _("_No"), (no_cb))
 
 /**
  * A wrapper for purple_request_action() that uses @c OK and @c Cancel buttons.
  */
 #define purple_request_ok_cancel(handle, title, primary, secondary, \
-							default_action, user_data, ok_cb, cancel_cb) \
+							default_action, account, who, conv, \
+						    user_data, ok_cb, cancel_cb) \
 	purple_request_action((handle), (title), (primary), (secondary), \
-						(default_action), (user_data), 2, \
+						(default_action), account, who, conv, (user_data), 2, \
 						_("_OK"), (ok_cb), _("_Cancel"), (cancel_cb))
 
 /**
  * A wrapper for purple_request_action() that uses Accept and Cancel buttons.
  */
 #define purple_request_accept_cancel(handle, title, primary, secondary, \
-								   default_action, user_data, accept_cb, \
-								   cancel_cb) \
+								   default_action, account, who, conv, \
+								   user_data, accept_cb, cancel_cb) \
 	purple_request_action((handle), (title), (primary), (secondary), \
-						(default_action), (user_data), 2, \
+						(default_action), account, who, conv, (user_data), 2, \
 						_("_Accept"), (accept_cb), _("_Cancel"), (cancel_cb))
 
 /**
@@ -1372,6 +1404,9 @@
  *                    False if it is being used to open a file.
  * @param ok_cb       The callback for the @c OK button.
  * @param cancel_cb   The callback for the @c Cancel button.
+ * @param account	  The PurpleAccount associated with this request, or NULL if none is
+ * @param who		  The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv		  The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data   The data to pass to the callback.
  *
  * @return A UI-specific handle.
@@ -1379,6 +1414,7 @@
 void *purple_request_file(void *handle, const char *title, const char *filename,
 						gboolean savedialog,
 						GCallback ok_cb, GCallback cancel_cb,
+						PurpleAccount *account, const char *who, PurpleConversation *conv,
 						void *user_data);
 
 /**
@@ -1392,12 +1428,16 @@
  * @param dirname     The default directory name (may be @c NULL)
  * @param ok_cb       The callback for the @c OK button.
  * @param cancel_cb   The callback for the @c Cancel button.
+ * @param account	  The PurpleAccount associated with this request, or NULL if none is
+ * @param who		  The username of the buddy assocaited with this request, or NULL if none is
+ * @param conv		  The PurpleConversation associated with this request, or NULL if none is 
  * @param user_data   The data to pass to the callback.
  *
  * @return A UI-specific handle.
  */
 void *purple_request_folder(void *handle, const char *title, const char *dirname,
 						GCallback ok_cb, GCallback cancel_cb,
+						PurpleAccount *account, const char *who, PurpleConversation *conv,
 						void *user_data);
 
 /*@}*/
--- a/libpurple/server.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/libpurple/server.c	Thu Apr 26 12:25:49 2007 +0000
@@ -677,8 +677,8 @@
 
 
 		purple_request_accept_cancel(gc, NULL, _("Accept chat invitation?"), buf2,
-							   PURPLE_DEFAULT_ACTION_NONE, cid,
-							   G_CALLBACK(chat_invite_accept),
+							   PURPLE_DEFAULT_ACTION_NONE, account, who, NULL,
+							   cid, G_CALLBACK(chat_invite_accept),
 							   G_CALLBACK(chat_invite_reject));
 	}
 	else if (plugin_return > 0)
--- a/pidgin/gtkaccount.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkaccount.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1858,7 +1858,9 @@
 							  purple_account_get_username(account));
 
 		purple_request_close_with_handle(account);
-		purple_request_action(account, NULL, buf, NULL, 0, account, 2,
+		purple_request_action(account, NULL, buf, NULL, 0,
+							account, NULL, NULL,
+							account, 2,
 							_("Delete"), delete_account_cb,
 							_("Cancel"), NULL);
 		g_free(buf);
--- a/pidgin/gtkblist.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkblist.c	Thu Apr 26 12:25:49 2007 +0000
@@ -3954,6 +3954,7 @@
 
 	enabled = purple_account_get_enabled(account, purple_core_get_ui());
 	purple_request_action(account, _("Connection Error"), primary, text, 2,
+						account, NULL, NULL,
 						account, 3,
 						_("OK"), NULL,
 						_("Modify Account"), PURPLE_CALLBACK(ce_modify_account_cb),
@@ -5805,7 +5806,9 @@
 					   _("Please enter the name of the group to be added."),
 					   NULL, FALSE, FALSE, NULL,
 					   _("Add"), G_CALLBACK(add_group_cb),
-					   _("Cancel"), NULL, NULL);
+					   _("Cancel"), NULL,
+					   NULL, NULL, NULL,
+					   NULL);
 }
 
 void
--- a/pidgin/gtkconv.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkconv.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1012,7 +1012,9 @@
 
 	purple_request_file(PIDGIN_CONVERSATION(conv), _("Save Conversation"),
 					  purple_escape_filename(buf),
-					  TRUE, G_CALLBACK(savelog_writefile_cb), NULL, conv);
+					  TRUE, G_CALLBACK(savelog_writefile_cb), NULL,
+					  NULL, NULL, conv,
+					  conv);
 
 	g_free(buf);
 }
@@ -2545,7 +2547,9 @@
 	buf = g_strdup_printf("%s.%s", purple_normalize(conv->account, conv->name), ext);
 
 	purple_request_file(gtkconv, _("Save Icon"), buf, TRUE,
-					 G_CALLBACK(saveicon_writefile_cb), NULL, gtkconv);
+					 G_CALLBACK(saveicon_writefile_cb), NULL,
+					conv->account, NULL, conv,
+					gtkconv);
 
 	g_free(buf);
 }
--- a/pidgin/gtkdebug.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkdebug.c	Thu Apr 26 12:25:49 2007 +0000
@@ -231,7 +231,9 @@
 save_cb(GtkWidget *w, DebugWindow *win)
 {
 	purple_request_file(win, _("Save Debug Log"), "purple-debug.log", TRUE,
-					  G_CALLBACK(save_writefile_cb), NULL, win);
+					  G_CALLBACK(save_writefile_cb), NULL,
+					  NULL, NULL, NULL,
+					  win);
 }
 
 static void
--- a/pidgin/gtkdialogs.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkdialogs.c	Thu Apr 26 12:25:49 2007 +0000
@@ -719,6 +719,7 @@
 						fields,
 						_("OK"), G_CALLBACK(pidgin_dialogs_im_cb),
 						_("Cancel"), NULL,
+						NULL, NULL, NULL,
 						NULL);
 }
 
@@ -856,6 +857,7 @@
 						fields,
 						_("OK"), G_CALLBACK(pidgin_dialogs_info_cb),
 						_("Cancel"), NULL,
+						NULL, NULL, NULL,
 						NULL);
 }
 
@@ -947,6 +949,7 @@
 						fields,
 						_("OK"), G_CALLBACK(pidgin_dialogs_log_cb),
 						_("Cancel"), NULL,
+						NULL, NULL, NULL,
 						NULL);
 }
 
@@ -965,7 +968,9 @@
 					   _("Enter an alias for this contact."),
 					   contact->alias, FALSE, FALSE, NULL,
 					   _("Alias"), G_CALLBACK(pidgin_dialogs_alias_contact_cb),
-					   _("Cancel"), NULL, contact);
+					   _("Cancel"), NULL,
+					   NULL, purple_contact_get_alias(contact), NULL,
+					   contact);
 }
 
 static void
@@ -987,7 +992,9 @@
 	purple_request_input(NULL, _("Alias Buddy"), NULL,
 					   secondary, buddy->alias, FALSE, FALSE, NULL,
 					   _("Alias"), G_CALLBACK(pidgin_dialogs_alias_buddy_cb),
-					   _("Cancel"), NULL, buddy);
+					   _("Cancel"), NULL,
+					   purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL,
+					   buddy);
 
 	g_free(secondary);
 }
@@ -1007,7 +1014,9 @@
 					   _("Enter an alias for this chat."),
 					   chat->alias, FALSE, FALSE, NULL,
 					   _("Alias"), G_CALLBACK(pidgin_dialogs_alias_chat_cb),
-					   _("Cancel"), NULL, chat);
+					   _("Cancel"), NULL,
+					   chat->account, NULL, NULL,
+					   chat);
 }
 
 static void
@@ -1049,9 +1058,12 @@
 						"want to continue?", contact->totalsize - 1),
 					buddy->name, contact->totalsize - 1);
 
-		purple_request_action(contact, NULL, _("Remove Contact"), text, 0, contact, 2,
+		purple_request_action(contact, NULL, _("Remove Contact"), text, 0,
+				NULL, purple_contact_get_alias(contact), NULL,
+				contact, 2,
 				_("_Remove Contact"), G_CALLBACK(pidgin_dialogs_remove_contact_cb),
-				_("Cancel"), NULL);
+				_("Cancel"),
+				NULL);
 
 		g_free(text);
 	}
@@ -1087,7 +1099,9 @@
 	ggp->parent = source;
 	ggp->new_name = g_strdup(new_name);
 	
-	purple_request_action(source, NULL, _("Merge Groups"), text, 0, ggp, 2,
+	purple_request_action(source, NULL, _("Merge Groups"), text, 0,
+			NULL, NULL, NULL,
+			ggp, 2,
 			_("_Merge Groups"), G_CALLBACK(pidgin_dialogs_merge_groups_cb),
 			_("Cancel"), G_CALLBACK(free_ggmo));
 
@@ -1141,7 +1155,9 @@
 	text = g_strdup_printf(_("You are about to remove the group %s and all its members from your buddy list.  Do you want to continue?"),
 						   group->name);
 
-	purple_request_action(group, NULL, _("Remove Group"), text, 0, group, 2,
+	purple_request_action(group, NULL, _("Remove Group"), text, 0,
+						NULL, NULL, NULL,
+						group, 2,
 						_("_Remove Group"), G_CALLBACK(pidgin_dialogs_remove_group_cb),
 						_("Cancel"), NULL);
 
@@ -1178,7 +1194,9 @@
 	text = g_strdup_printf(_("You are about to remove %s from your buddy list.  Do you want to continue?"),
 						   buddy->name);
 
-	purple_request_action(buddy, NULL, _("Remove Buddy"), text, 0, buddy, 2,
+	purple_request_action(buddy, NULL, _("Remove Buddy"), text, 0,
+						purple_buddy_get_account(buddy), purple_buddy_get_name(buddy), NULL,
+						buddy, 2,
 						_("_Remove Buddy"), G_CALLBACK(pidgin_dialogs_remove_buddy_cb),
 						_("Cancel"), NULL);
 
@@ -1203,7 +1221,9 @@
 	text = g_strdup_printf(_("You are about to remove the chat %s from your buddy list.  Do you want to continue?"),
 			name ? name : "");
 
-	purple_request_action(chat, NULL, _("Remove Chat"), text, 0, chat, 2,
+	purple_request_action(chat, NULL, _("Remove Chat"), text, 0,
+						chat->account, NULL, NULL,
+						chat, 2,
 						_("_Remove Chat"), G_CALLBACK(pidgin_dialogs_remove_chat_cb),
 						_("Cancel"), NULL);
 
--- a/pidgin/gtkimhtmltoolbar.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkimhtmltoolbar.c	Thu Apr 26 12:25:49 2007 +0000
@@ -417,6 +417,7 @@
 					    fields,
 					    _("_Insert"), G_CALLBACK(do_insert_link_cb),
 					    _("Cancel"), G_CALLBACK(cancel_link_cb),
+						NULL, NULL, NULL,
 					    toolbar);
 		g_free(msg);
 		g_free(desc);
--- a/pidgin/gtklog.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtklog.c	Thu Apr 26 12:25:49 2007 +0000
@@ -295,8 +295,11 @@
 	data2[0] = lv->treestore;
 	data2[1] = data[3]; /* iter */
 	data2[2] = log;
-	purple_request_action(lv, NULL, "Delete Log?", tmp,
-	                    0, data2, 2, _("Delete"), delete_log_cb, _("Cancel"), delete_log_cleanup_cb);
+	purple_request_action(lv, NULL, "Delete Log?", tmp, 0, 
+						NULL, NULL, NULL,
+						data2, 2,
+						_("Delete"), delete_log_cb,
+						_("Cancel"), delete_log_cleanup_cb);
 	g_free(tmp);
 }
 
--- a/pidgin/gtkplugin.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkplugin.c	Thu Apr 26 12:25:49 2007 +0000
@@ -281,7 +281,9 @@
 
 			purple_request_action(plugin_dialog, NULL,
 			                    _("Multiple plugins will be unloaded."),
-			                    tmp->str, 0, cb_data, 2,
+			                    tmp->str, 0,
+								NULL, NULL, NULL,
+								cb_data, 2,
 			                    _("Unload Plugins"), G_CALLBACK(plugin_unload_confirm_cb),
 			                    _("Cancel"), g_free);
 			g_string_free(tmp, TRUE);
--- a/pidgin/gtkpounce.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkpounce.c	Thu Apr 26 12:25:49 2007 +0000
@@ -153,7 +153,9 @@
 	name = gtk_entry_get_text(GTK_ENTRY(entry));
 
 	purple_request_file(entry, _("Select a file"), name, FALSE,
-					  G_CALLBACK(pounce_update_entry_fields), NULL, entry);
+					  G_CALLBACK(pounce_update_entry_fields), NULL,
+					  NULL, NULL, NULL,
+					  entry);
 	g_signal_connect_swapped(G_OBJECT(entry), "destroy",
 			G_CALLBACK(purple_request_close_with_handle), entry);
 }
@@ -1093,7 +1095,9 @@
 	pouncee = purple_pounce_get_pouncee(pounce);
 
 	buf = g_strdup_printf(_("Are you sure you want to delete the pounce on %s for %s?"), pouncee, pouncer);
-	purple_request_action(pounce, NULL, buf, NULL, 0, pounce, 2,
+	purple_request_action(pounce, NULL, buf, NULL, 0,
+						account, pouncee, NULL,
+						pounce, 2,
 						_("Delete"), pounces_manager_delete_confirm_cb,
 						_("Cancel"), NULL);
 	g_free(buf);
--- a/pidgin/gtkprefs.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkprefs.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1511,7 +1511,9 @@
 		filename = NULL;
 
 	purple_request_file(prefs, _("Sound Selection"), filename, FALSE,
-					  G_CALLBACK(sound_chosen_cb), NULL, GINT_TO_POINTER(sound_row_sel));
+					  G_CALLBACK(sound_chosen_cb), NULL, 
+					  NULL, NULL, NULL,
+					  GINT_TO_POINTER(sound_row_sel));
 }
 
 #ifdef USE_GSTREAMER
--- a/pidgin/gtkprivacy.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkprivacy.c	Thu Apr 26 12:25:49 2007 +0000
@@ -564,6 +564,7 @@
 			NULL, FALSE, FALSE, NULL,
 			_("_Permit"), G_CALLBACK(add_permit_block_cb),
 			_("Cancel"), G_CALLBACK(destroy_request_data),
+			account, name, NULL,
 			data);
 	}
 	else {
@@ -574,7 +575,9 @@
 
 
 		purple_request_action(account, _("Permit User"), primary, secondary,
-							0, data, 2,
+							0,
+							account, name, NULL,
+							data, 2,
 							_("_Permit"), G_CALLBACK(confirm_permit_block_cb),
 							_("Cancel"), G_CALLBACK(destroy_request_data));
 
@@ -602,6 +605,7 @@
 			NULL, FALSE, FALSE, NULL,
 			_("_Block"), G_CALLBACK(add_permit_block_cb),
 			_("Cancel"), G_CALLBACK(destroy_request_data),
+			account, name, NULL,
 			data);
 	}
 	else {
@@ -610,7 +614,9 @@
 			g_strdup_printf(_("Are you sure you want to block %s?"), name);
 
 		purple_request_action(account, _("Block User"), primary, secondary,
-							0, data, 2,
+							0,
+							account, name, NULL,
+							data, 2,
 							_("_Block"), G_CALLBACK(confirm_permit_block_cb),
 							_("Cancel"), G_CALLBACK(destroy_request_data));
 
--- a/pidgin/gtkrequest.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkrequest.c	Thu Apr 26 12:25:49 2007 +0000
@@ -285,6 +285,7 @@
 					   gboolean multiline, gboolean masked, gchar *hint,
 					   const char *ok_text, GCallback ok_cb,
 					   const char *cancel_text, GCallback cancel_cb,
+					   PurpleAccount *account, const char *who, PurpleConversation *conv,
 					   void *user_data)
 {
 	PidginRequestData *data;
@@ -443,6 +444,7 @@
 			const char *secondary, unsigned int default_value,
 			const char *ok_text, GCallback ok_cb,
 			const char *cancel_text, GCallback cancel_cb,
+			PurpleAccount *account, const char *who, PurpleConversation *conv,
 			void *user_data, va_list args)
 {
 	PidginRequestData *data;
@@ -544,6 +546,7 @@
 static void *
 pidgin_request_action(const char *title, const char *primary,
 						const char *secondary, unsigned int default_action,
+					    PurpleAccount *account, const char *who, PurpleConversation *conv,
 						void *user_data, size_t action_count, va_list actions)
 {
 	PidginRequestData *data;
@@ -1025,6 +1028,7 @@
 						const char *secondary, PurpleRequestFields *fields,
 						const char *ok_text, GCallback ok_cb,
 						const char *cancel_text, GCallback cancel_cb,
+					    PurpleAccount *account, const char *who, PurpleConversation *conv,
 						void *user_data)
 {
 	PidginRequestData *data;
@@ -1467,7 +1471,9 @@
 	if ((data->u.file.savedialog == TRUE) &&
 		(g_file_test(data->u.file.name, G_FILE_TEST_EXISTS))) {
 		purple_request_action(data, NULL, _("That file already exists"),
-							_("Would you like to overwrite it?"), 0, data, 2,
+							_("Would you like to overwrite it?"), 0,
+							NULL, NULL, NULL,
+							data, 2,
 							_("Overwrite"), G_CALLBACK(file_yes_no_cb),
 							_("Choose New Name"), G_CALLBACK(file_yes_no_cb));
 	} else
@@ -1491,6 +1497,7 @@
 pidgin_request_file(const char *title, const char *filename,
 					  gboolean savedialog,
 					  GCallback ok_cb, GCallback cancel_cb,
+					  PurpleAccount *account, const char *who, PurpleConversation *conv,
 					  void *user_data)
 {
 	PidginRequestData *data;
@@ -1588,6 +1595,7 @@
 static void *
 pidgin_request_folder(const char *title, const char *dirname,
 					  GCallback ok_cb, GCallback cancel_cb,
+					  PurpleAccount *account, const char *who, PurpleConversation *conv,
 					  void *user_data)
 {
 	PidginRequestData *data;
--- a/pidgin/gtksavedstatuses.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtksavedstatuses.c	Thu Apr 26 12:25:49 2007 +0000
@@ -330,8 +330,9 @@
 	else
 		title = g_strdup(_("Are you sure you want to delete the selected saved statuses?"));
 
-	purple_request_action(dialog, NULL, title,
-		 NULL, 0, sel_titles, 2,
+	purple_request_action(dialog, NULL, title, NULL, 0,
+		 NULL, NULL, NULL,
+		 sel_titles, 2,
 		_("Delete"), status_window_delete_confirm_cb,
 		_("Cancel"), status_window_delete_cancel_cb);
 
--- a/pidgin/gtkutils.c	Thu Apr 26 10:49:27 2007 +0000
+++ b/pidgin/gtkutils.c	Thu Apr 26 12:25:49 2007 +0000
@@ -1454,24 +1454,33 @@
 						    _("You can send this image as a file transfer, "
 						      "embed it into this message, or use it as the buddy icon for this user."),
 						    DND_FILE_TRANSFER, "OK", (GCallback)dnd_image_ok_callback,
-						    "Cancel", (GCallback)dnd_image_cancel_callback, data,
-						    _("Set as buddy icon"), DND_BUDDY_ICON,
+						    "Cancel", (GCallback)dnd_image_cancel_callback,
+							account, who, NULL,
+							data,
+							_("Set as buddy icon"), DND_BUDDY_ICON,
 						    _("Send image file"), DND_FILE_TRANSFER,
-						    _("Insert in message"), DND_IM_IMAGE, NULL);
+						    _("Insert in message"), DND_IM_IMAGE,
+							NULL);
 			else if (!(im || ft))
 				purple_request_yes_no(NULL, NULL, _("You have dragged an image"),
-						       _("Would you like to set it as the buddy icon for this user?"),
-						    0, data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb);
+							_("Would you like to set it as the buddy icon for this user?"),
+							0,
+							account, who, NULL,
+							data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb);
 			else
 				purple_request_choice(NULL, NULL,
 						    _("You have dragged an image"),
-						    ft ? _("You can send this image as a file transfer or "
+						    (ft ? _("You can send this image as a file transfer or "
 							   "embed it into this message, or use it as the buddy icon for this user.") :
-						    _("You can insert this image into this message, or use it as the buddy icon for this user"),
-						    ft ? DND_FILE_TRANSFER : DND_IM_IMAGE, "OK", (GCallback)dnd_image_ok_callback,
-						    "Cancel", (GCallback)dnd_image_cancel_callback, data,
+						    _("You can insert this image into this message, or use it as the buddy icon for this user")),
+						    (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
+							"OK", (GCallback)dnd_image_ok_callback,
+						    "Cancel", (GCallback)dnd_image_cancel_callback,
+							account, who, NULL,
+							data,
 						    _("Set as buddy icon"), DND_BUDDY_ICON,
-						    ft ? _("Send image file") : _("Insert in message"), ft ? DND_FILE_TRANSFER : DND_IM_IMAGE, NULL);
+						    (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
+							NULL);
 			return;
 		}