Merged soc.2013.gobjectification branch soc.2013.gobjectification.plugins

Sat, 21 Sep 2013 17:01:08 +0530

author
Ankit Vani <a@nevitus.org>
date
Sat, 21 Sep 2013 17:01:08 +0530
branch
soc.2013.gobjectification.plugins
changeset 36782
64936dae41a3
parent 36781
8fb558514134 (current diff)
parent 34955
854143116575 (diff)
child 36783
8eadcfdb65ca

Merged soc.2013.gobjectification branch

finch/gntaccount.c file | annotate | diff | comparison | revisions
finch/gntblist.c file | annotate | diff | comparison | revisions
finch/gntlog.c file | annotate | diff | comparison | revisions
finch/gntplugin.c file | annotate | diff | comparison | revisions
finch/gntpounce.c file | annotate | diff | comparison | revisions
finch/plugins/gntclipboard.c file | annotate | diff | comparison | revisions
finch/plugins/gnttinyurl.c file | annotate | diff | comparison | revisions
libpurple/account.c file | annotate | diff | comparison | revisions
libpurple/connection.c file | annotate | diff | comparison | revisions
libpurple/conversation.c file | annotate | diff | comparison | revisions
libpurple/dbus-server.h file | annotate | diff | comparison | revisions
libpurple/keyring.c file | annotate | diff | comparison | revisions
libpurple/notify.h file | annotate | diff | comparison | revisions
libpurple/plugins.c file | annotate | diff | comparison | revisions
libpurple/plugins/autoaccept.c file | annotate | diff | comparison | revisions
libpurple/plugins/helloworld.c file | annotate | diff | comparison | revisions
libpurple/plugins/idle.c file | annotate | diff | comparison | revisions
libpurple/plugins/keyrings/internalkeyring.c file | annotate | diff | comparison | revisions
libpurple/plugins/notify_example.c file | annotate | diff | comparison | revisions
libpurple/plugins/tcl/tcl_cmds.c file | annotate | diff | comparison | revisions
libpurple/protocols/gg/gg.c file | annotate | diff | comparison | revisions
libpurple/protocols/gg/pubdir-prpl.c file | annotate | diff | comparison | revisions
libpurple/protocols/irc/irc.c file | annotate | diff | comparison | revisions
libpurple/protocols/irc/msgs.c file | annotate | diff | comparison | revisions
libpurple/protocols/irc/parse.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/adhoccommands.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/buddy.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/chat.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/jabber.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/presence.c file | annotate | diff | comparison | revisions
libpurple/protocols/jabber/si.c file | annotate | diff | comparison | revisions
libpurple/protocols/msn/contact.c file | annotate | diff | comparison | revisions
libpurple/protocols/msn/msn.c file | annotate | diff | comparison | revisions
libpurple/protocols/mxit/client.c file | annotate | diff | comparison | revisions
libpurple/protocols/myspace/myspace.c file | annotate | diff | comparison | revisions
libpurple/protocols/novell/novell.c file | annotate | diff | comparison | revisions
libpurple/protocols/oscar/family_icbm.c file | annotate | diff | comparison | revisions
libpurple/protocols/oscar/oscar.c file | annotate | diff | comparison | revisions
libpurple/protocols/sametime/sametime.c file | annotate | diff | comparison | revisions
libpurple/protocols/silc/buddy.c file | annotate | diff | comparison | revisions
libpurple/protocols/silc/chat.c file | annotate | diff | comparison | revisions
libpurple/protocols/silc/ops.c file | annotate | diff | comparison | revisions
libpurple/protocols/silc/silc.c file | annotate | diff | comparison | revisions
libpurple/protocols/yahoo/yahoo_filexfer.c file | annotate | diff | comparison | revisions
libpurple/protocols/yahoo/yahoochat.c file | annotate | diff | comparison | revisions
libpurple/protocols/yahoo/ycht.c file | annotate | diff | comparison | revisions
libpurple/protocols/yahoo/ymsg.c file | annotate | diff | comparison | revisions
libpurple/protocols/zephyr/zephyr.c file | annotate | diff | comparison | revisions
libpurple/request.h file | annotate | diff | comparison | revisions
libpurple/server.h file | annotate | diff | comparison | revisions
libpurple/xfer.c file | annotate | diff | comparison | revisions
pidgin/gtkaccount.c file | annotate | diff | comparison | revisions
pidgin/gtkblist.c file | annotate | diff | comparison | revisions
pidgin/gtkconv.c file | annotate | diff | comparison | revisions
pidgin/gtkimhtmltoolbar.c file | annotate | diff | comparison | revisions
pidgin/gtklog.c file | annotate | diff | comparison | revisions
pidgin/gtknotify.c file | annotate | diff | comparison | revisions
pidgin/gtkplugin.c file | annotate | diff | comparison | revisions
pidgin/gtkpounce.c file | annotate | diff | comparison | revisions
pidgin/gtkprefs.c file | annotate | diff | comparison | revisions
pidgin/gtksavedstatuses.c file | annotate | diff | comparison | revisions
pidgin/gtkutils.c file | annotate | diff | comparison | revisions
pidgin/gtkwebviewtoolbar.c file | annotate | diff | comparison | revisions
pidgin/gtkxfer.c file | annotate | diff | comparison | revisions
pidgin/plugins/disco/gtkdisco.c file | annotate | diff | comparison | revisions
pidgin/plugins/disco/xmppdisco.c file | annotate | diff | comparison | revisions
pidgin/plugins/history.c file | annotate | diff | comparison | revisions
pidgin/plugins/musicmessaging/musicmessaging.c file | annotate | diff | comparison | revisions
pidgin/plugins/spellchk.c file | annotate | diff | comparison | revisions
--- a/finch/gntaccount.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntaccount.c	Sat Sep 21 17:01:08 2013 +0530
@@ -124,8 +124,10 @@
 	if (value == NULL || *value == '\0')
 	{
 		purple_notify_error(NULL, _("Error"),
-				dialog->account ? _("Account was not modified") : _("Account was not added"),
-				_("Username of an account must be non-empty."));
+			dialog->account ? _("Account was not modified") :
+				_("Account was not added"),
+			_("Username of an account must be non-empty."),
+			purple_request_cpar_from_account(dialog->account));
 		return;
 	}
 
@@ -166,15 +168,25 @@
 			const char *old = purple_account_get_protocol_id(account);
 			char *oldproto;
 			if (strcmp(old, purple_protocol_get_id(protocol))) {
-				purple_notify_error(NULL, _("Error"), _("Account was not modified"),
-						_("The account's protocol cannot be changed while it is connected to the server."));
+				purple_notify_error(NULL, _("Error"),
+					_("Account was not modified"),
+					_("The account's protocol cannot be "
+					"changed while it is connected to the "
+					"server."),
+					purple_request_cpar_from_account(
+						account));
 				return;
 			}
 
 			oldproto = g_strdup(purple_normalize(account, purple_account_get_username(account)));
 			if (g_utf8_collate(oldproto, purple_normalize(account, username->str))) {
-				purple_notify_error(NULL, _("Error"), _("Account was not modified"),
-						_("The account's username cannot be changed while it is connected to the server."));
+				purple_notify_error(NULL, _("Error"),
+					_("Account was not modified"),
+					_("The account's username cannot be "
+					"changed while it is connected to the "
+					"server."),
+					purple_request_cpar_from_account(
+						account));
 				g_free(oldproto);
 				return;
 			}
@@ -547,8 +559,9 @@
 	list = purple_protocols_get_all();
 	if (list == NULL) {
 		purple_notify_error(NULL, _("Error"),
-				_("There are no protocols installed."),
-				_("(You probably forgot to 'make install'.)"));
+			_("There are no protocols installed."),
+			_("(You probably forgot to 'make install'.)"),
+			purple_request_cpar_from_account(account));
 		return;
 	}
 
@@ -958,7 +971,8 @@
 
 	buffer = make_info(account, gc, remote_user, id, alias, msg);
 
-	purple_notify_info(NULL, NULL, buffer, NULL);
+	purple_notify_info(NULL, NULL, buffer, NULL,
+		purple_request_cpar_from_connection(gc));
 
 	g_free(buffer);
 }
--- a/finch/gntblist.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntblist.c	Sat Sep 21 17:01:08 2013 +0530
@@ -641,7 +641,8 @@
 	if (error)
 	{
 		finch_request_add_buddy(account, username, group, alias);
-		purple_notify_error(NULL, _("Error"), _("Error adding buddy"), error);
+		purple_notify_error(NULL, _("Error"), _("Error adding buddy"),
+			error, purple_request_cpar_from_account(account));
 		return;
 	}
 
@@ -802,7 +803,7 @@
 
 	if (!group || !*group) {
 		purple_notify_error(NULL, _("Error"), _("Error adding group"),
-				_("You must give a name for the group to add."));
+				_("You must give a name for the group to add."), NULL);
 		return;
 	}
 
--- a/finch/gntcertmgr.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntcertmgr.c	Sat Sep 21 17:01:08 2013 +0530
@@ -97,7 +97,7 @@
 		purple_notify_error(NULL,
 				_("Certificate Import Error"),
 				_("X.509 certificate import failed"),
-				secondary);
+				secondary, NULL);
 		g_free(secondary);
 	}
 }
@@ -127,7 +127,7 @@
 		purple_notify_error(NULL,
 				    _("Certificate Export Error"),
 				    _("X.509 certificate export failed"),
-				    secondary);
+				    secondary, NULL);
 		g_free(secondary);
 	}
 
@@ -193,7 +193,7 @@
 	secondary = g_strdup_printf(_("Common name: %s\n\nSHA1 fingerprint:\n%s"), subject, fpr_sha1_asc);
 
 	purple_notify_info(NULL,
-			   _("SSL Host Certificate"), primary, secondary);
+			   _("SSL Host Certificate"), primary, secondary, NULL);
 
 	g_free(primary);
 	g_free(secondary);
--- a/finch/gntdebug.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntdebug.c	Sat Sep 21 17:01:08 2013 +0530
@@ -273,7 +273,7 @@
 	FILE *fp;
 
 	if ((fp = g_fopen(path, "w+")) == NULL) {
-		purple_notify_error(NULL, NULL, _("Unable to open file."), NULL);
+		purple_notify_error(NULL, NULL, _("Unable to open file."), NULL, NULL);
 		return;
 	}
 
--- a/finch/gntlog.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntlog.c	Sat Sep 21 17:01:08 2013 +0530
@@ -289,7 +289,7 @@
 			g_free(ht);
 		}
 
-		purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
+		purple_notify_info(NULL, title, _("No logs were found"), log_preferences, NULL);
 		return NULL;
 	}
 
--- a/finch/gntnotify.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntnotify.c	Sat Sep 21 17:01:08 2013 +0530
@@ -54,7 +54,8 @@
 
 static void *
 finch_notify_message(PurpleNotifyMsgType type, const char *title,
-		const char *primary, const char *secondary)
+	const char *primary, const char *secondary,
+	PurpleRequestCommonParameters *cpar)
 {
 	GntWidget *window, *button;
 	GntTextFormatFlags pf = 0, sf = 0;
@@ -156,7 +157,7 @@
 	void *ret;
 
 	purple_markup_html_to_xhtml(t, &xhtml, NULL);
-	ret = finch_notify_message(PURPLE_NOTIFY_FORMATTED, title, primary, xhtml);
+	ret = finch_notify_message(PURPLE_NOTIFY_FORMATTED, title, primary, xhtml, NULL);
 
 	g_free(t);
 	g_free(xhtml);
@@ -249,7 +250,7 @@
 		return NULL;
 	}
 
-	ret = finch_notify_message(PURPLE_NOTIFY_EMAIL, _("New Mail"), _("You have mail!"), message->str);
+	ret = finch_notify_message(PURPLE_NOTIFY_EMAIL, _("New Mail"), _("You have mail!"), message->str, NULL);
 	g_string_free(message, TRUE);
 	return ret;
 }
@@ -503,7 +504,7 @@
 static void *
 finch_notify_uri(const char *url)
 {
-	return finch_notify_message(PURPLE_NOTIFY_URI, _("URI"), url, NULL);
+	return finch_notify_message(PURPLE_NOTIFY_URI, _("URI"), url, NULL, NULL);
 }
 
 static PurpleNotifyUiOps ops =
--- a/finch/gntplugin.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntplugin.c	Sat Sep 21 17:01:08 2013 +0530
@@ -197,8 +197,7 @@
 	if (gnt_tree_get_choice(GNT_TREE(tree), plugin))
 	{
 		if (!purple_plugin_load(plugin, &error)) {
-			purple_notify_error(NULL, _("ERROR"), _("loading plugin failed"),
-					error->message);
+			purple_notify_error(NULL, _("ERROR"), _("loading plugin failed"), error->message, NULL);
 			gnt_tree_set_choice(GNT_TREE(tree), plugin, FALSE);
 			g_error_free(error);
 		}
@@ -208,8 +207,7 @@
 		GntWidget *win;
 
 		if (!purple_plugin_unload(plugin, &error)) {
-			purple_notify_error(NULL, _("ERROR"), _("unloading plugin failed"),
-					error->message);
+			purple_notify_error(NULL, _("ERROR"), _("unloading plugin failed"), error->message, NULL);
 			purple_plugin_disable(plugin);
 			gnt_tree_set_choice(GNT_TREE(tree), plugin, TRUE);
 			g_error_free(error);
@@ -335,7 +333,7 @@
 	if (!purple_plugin_is_loaded(plugin))
 	{
 		purple_notify_error(plugin, _("Error"),
-			_("Plugin need to be loaded before you can configure it."), NULL);
+			_("Plugin need to be loaded before you can configure it."), NULL, NULL);
 		return;
 	}
 
@@ -386,7 +384,7 @@
 	else
 	{
 		purple_notify_info(plugin, _("Error"),
-			_("No configuration options for this plugin."), NULL);
+			_("No configuration options for this plugin."), NULL, NULL);
 	}
 }
 
@@ -409,7 +407,7 @@
 	if (!plugin) {
 		purple_notify_error(handle, _("Error loading plugin"),
 				_("The selected file is not a valid plugin."),
-				_("Please open the debug window and try again to see the exact error message."));
+				_("Please open the debug window and try again to see the exact error message."), NULL);
 		return;
 	}
 	if (g_list_find(gnt_tree_get_rows(GNT_TREE(plugins.tree)), plugin)) {
--- a/finch/gntpounce.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntpounce.c	Sat Sep 21 17:01:08 2013 +0530
@@ -192,7 +192,7 @@
 	if (*name == '\0')
 	{
 		purple_notify_error(NULL, NULL,
-						  _("Please enter a buddy to pounce."), NULL);
+						  _("Please enter a buddy to pounce."), NULL, NULL);
 		return;
 	}
 
@@ -631,7 +631,7 @@
 	if (purple_accounts_get_all() == NULL) {
 		purple_notify_error(NULL, _("Cannot create pounce"),
 				_("You do not have any accounts."),
-				_("You must create an account first before you can create a pounce."));
+				_("You must create an account first before you can create a pounce."), NULL);
 		return;
 	}
 	finch_pounce_editor_show(NULL, NULL, NULL);
@@ -853,12 +853,12 @@
 
 		if (reason == NULL)
 		{
-			purple_notify_info(NULL, name_shown, tmp, purple_date_format_full(NULL));
+			purple_notify_info(NULL, name_shown, tmp, purple_date_format_full(NULL), NULL);
 		}
 		else
 		{
 			char *tmp2 = g_strdup_printf("%s\n\n%s", reason, purple_date_format_full(NULL));
-			purple_notify_info(NULL, name_shown, tmp, tmp2);
+			purple_notify_info(NULL, name_shown, tmp, tmp2, NULL);
 			g_free(tmp2);
 		}
 		g_free(tmp);
--- a/finch/gntprefs.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntprefs.c	Sat Sep 21 17:01:08 2013 +0530
@@ -298,7 +298,7 @@
 	if (fields == NULL) {
 		purple_notify_info(NULL, _("Keyring settings"),
 			_("Selected keyring doesn't allow any configuration"),
-			NULL);
+			NULL, NULL);
 		return;
 	}
 
--- a/finch/gntrequest.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntrequest.c	Sat Sep 21 17:01:08 2013 +0530
@@ -391,7 +391,7 @@
 			!purple_request_fields_all_valid(fields))) {
 		purple_notify_error(button, _("Error"),
 			_("You must properly fill all the required fields."),
-			_("The required fields are underlined."));
+			_("The required fields are underlined."), NULL);
 		return;
 	}
 
--- a/finch/gntsound.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntsound.c	Sat Sep 21 17:01:08 2013 +0530
@@ -378,7 +378,7 @@
 	if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) {
 		purple_notify_error(NULL, _("GStreamer Failure"),
 					_("GStreamer failed to initialize."),
-					error ? error->message : "");
+					error ? error->message : "", NULL);
 		if (error) {
 			g_error_free(error);
 			error = NULL;
--- a/finch/gntstatus.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/gntstatus.c	Sat Sep 21 17:01:08 2013 +0530
@@ -300,7 +300,7 @@
 	if (!title || !*title)
 	{
 		purple_notify_error(edit, _("Error"), _("Invalid title"),
-				_("Please enter a non-empty title for the status."));
+				_("Please enter a non-empty title for the status."), NULL);
 		gnt_box_give_focus_to_child(GNT_BOX(edit->window), edit->title);
 		return;
 	}
@@ -309,7 +309,7 @@
 	if (find && find != edit->saved)
 	{
 		purple_notify_error(edit, _("Error"), _("Duplicate title"),
-				_("Please enter a different title for the status."));
+				_("Please enter a different title for the status."), NULL);
 		gnt_box_give_focus_to_child(GNT_BOX(edit->window), edit->title);
 		return;
 	}
--- a/finch/plugins/gntclipboard.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/plugins/gntclipboard.c	Sat Sep 21 17:01:08 2013 +0530
@@ -138,13 +138,13 @@
 	if (!XOpenDisplay(NULL)) {
 		purple_debug_warning("gntclipboard", "Couldn't find X display\n");
 		purple_notify_error(NULL, _("Error"), _("Error loading the plugin."),
-				_("Couldn't find X display"));
+				_("Couldn't find X display"), NULL);
 		return FALSE;
 	}
 	if (!getenv("WINDOWID")) {
 		purple_debug_warning("gntclipboard", "Couldn't find window\n");
 		purple_notify_error(NULL, _("Error"), _("Error loading the plugin."),
-				_("Couldn't find window"));
+				_("Couldn't find window"), NULL);
 		return FALSE;
 	}
 	sig_handle = g_signal_connect(G_OBJECT(gnt_get_clipboard()), "clipboard_changed", G_CALLBACK(clipboard_changed), NULL);
--- a/finch/plugins/gnttinyurl.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/finch/plugins/gnttinyurl.c	Sat Sep 21 17:01:08 2013 +0530
@@ -385,7 +385,7 @@
 	 * may not always happen, e.g. when another plugin sets its own
 	 * notify_message. So tread carefully. */
 	win = purple_notify_message(NULL, PURPLE_NOTIFY_URI, _("URI"), uri,
-			_("Please wait while TinyURL fetches a shorter URL ..."), NULL, NULL);
+			_("Please wait while TinyURL fetches a shorter URL ..."), NULL, NULL, NULL);
 	if (!GNT_IS_WINDOW(win) || !g_object_get_data(G_OBJECT(win), "info-widget"))
 		return win;
 
--- a/libpurple/account.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/account.c	Sat Sep 21 17:01:08 2013 +0530
@@ -230,7 +230,9 @@
 
 	if (!entry || !*entry)
 	{
-		purple_notify_error(account, NULL, _("Password is required to sign on."), NULL);
+		purple_notify_error(account, NULL,
+			_("Password is required to sign on."), NULL,
+			purple_request_cpar_from_account(account));
 		return;
 	}
 
@@ -322,7 +324,8 @@
 		gchar *message;
 
 		message = g_strdup_printf(_("Missing protocol for %s"), username);
-		purple_notify_error(account, _("Connection Error"), message, NULL);
+		purple_notify_error(account, _("Connection Error"), message,
+			NULL, purple_request_cpar_from_account(account));
 		g_free(message);
 		return;
 	}
@@ -581,7 +584,8 @@
 	if (g_utf8_collate(new_pass_1, new_pass_2))
 	{
 		purple_notify_error(account, NULL,
-						  _("New passwords do not match."), NULL);
+			_("New passwords do not match."), NULL,
+			purple_request_cpar_from_account(account));
 
 		return;
 	}
@@ -594,7 +598,8 @@
 			(new_pass_2 == NULL || *new_pass_2 == '\0')))
 	{
 		purple_notify_error(account, NULL,
-						  _("Fill out all fields completely."), NULL);
+			_("Fill out all fields completely."), NULL,
+			purple_request_cpar_from_account(account));
 		return;
 	}
 
--- a/libpurple/certificate.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/certificate.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1400,7 +1400,7 @@
 		purple_notify_error(NULL, /* TODO: Probably wrong. */
 					_("SSL Certificate Error"),
 					_("Unable to validate certificate"),
-					secondary);
+					secondary, NULL);
 		g_free(secondary);
 
 		purple_certificate_verify_complete(vrq, flags);
--- a/libpurple/connection.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/connection.c	Sat Sep 21 17:01:08 2013 +0530
@@ -881,7 +881,8 @@
 		message = g_strdup_printf(_("Missing protocol for %s"),
 			purple_account_get_username(account));
 		purple_notify_error(NULL, regist ? _("Registration Error") :
-						  _("Connection Error"), message, NULL);
+			_("Connection Error"), message, NULL,
+			purple_request_cpar_from_account(account));
 		g_free(message);
 		return;
 	}
@@ -950,7 +951,8 @@
 
 		message = g_strdup_printf(_("Missing protocol for %s"),
 								  purple_account_get_username(account));
-		purple_notify_error(NULL, _("Unregistration Error"), message, NULL);
+		purple_notify_error(NULL, _("Unregistration Error"), message,
+			NULL, purple_request_cpar_from_account(account));
 		g_free(message);
 		return;
 	}
--- a/libpurple/conversation.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/conversation.c	Sat Sep 21 17:01:08 2013 +0530
@@ -168,7 +168,9 @@
 
 			if (!purple_conversation_present_error(who, account, msg)) {
 				char *msg2 = g_strdup_printf(_("Unable to send message to %s."), who);
-				purple_notify_error(gc, NULL, msg2, _("The message is too large."));
+				purple_notify_error(gc, NULL, msg2,
+					_("The message is too large."),
+					purple_request_cpar_from_connection(gc));
 				g_free(msg2);
 			}
 		}
@@ -181,7 +183,8 @@
 
 			if (!purple_conversation_present_error(who, account, msg)) {
 				char *msg2 = g_strdup_printf(_("Unable to send message to %s."), who);
-				purple_notify_error(gc, NULL, msg2, NULL);
+				purple_notify_error(gc, NULL, msg2, NULL,
+					purple_request_cpar_from_connection(gc));
 				g_free(msg2);
 			}
 		}
--- a/libpurple/dbus-server.h	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/dbus-server.h	Sat Sep 21 17:01:08 2013 +0530
@@ -84,7 +84,7 @@
 				purple_plugin_info_get_name(purple_plugin_get_info(plugin))); \
 		purple_notify_error(NULL, title, \
 				_("Purple's D-BUS server is not running for the reason listed below"), \
-				_(purple_dbus_get_init_error())); \
+				_(purple_dbus_get_init_error()), NULL); \
 		g_free(title); \
 		return FALSE; \
 	}
--- a/libpurple/keyring.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/keyring.c	Sat Sep 21 17:01:08 2013 +0530
@@ -869,7 +869,7 @@
 	if (error != NULL) {
 		purple_notify_error(NULL, _("Keyrings"),
 			_("Failed to save a password in keyring."),
-			error->message);
+			error->message, NULL);
 	}
 
 	if (set_data->cb != NULL)
@@ -1205,7 +1205,7 @@
 		purple_notify_error(NULL, _("Keyrings"),
 			_("Failed to load selected keyring."),
 			_("Check your system configuration or select another "
-			"one in Preferences dialog."));
+			"one in Preferences dialog."), NULL);
 	}
 }
 
--- a/libpurple/notify.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/notify.c	Sat Sep 21 17:01:08 2013 +0530
@@ -67,9 +67,10 @@
 };
 
 void *
-purple_notify_message(void *handle, PurpleNotifyMsgType type,
-					const char *title, const char *primary,
-					const char *secondary, PurpleNotifyCloseCallback cb, gpointer user_data)
+purple_notify_message(void *handle, PurpleNotifyMsgType type, const char *title,
+	const char *primary, const char *secondary,
+	PurpleRequestCommonParameters *cpar, PurpleNotifyCloseCallback cb,
+	gpointer user_data)
 {
 	PurpleNotifyUiOps *ops;
 
@@ -79,7 +80,7 @@
 
 	if (ops != NULL && ops->notify_message != NULL) {
 		void *ui_handle = ops->notify_message(type, title, primary,
-											  secondary);
+			secondary, cpar);
 		if (ui_handle != NULL) {
 
 			PurpleNotifyInfo *info = g_new0(PurpleNotifyInfo, 1);
--- a/libpurple/notify.h	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/notify.h	Sat Sep 21 17:01:08 2013 +0530
@@ -40,6 +40,7 @@
 typedef struct _PurpleNotifySearchColumn	PurpleNotifySearchColumn;
 
 #include "connection.h"
+#include "request.h"
 
 
 /**
@@ -142,7 +143,8 @@
 typedef struct
 {
 	void *(*notify_message)(PurpleNotifyMsgType type, const char *title,
-	                        const char *primary, const char *secondary);
+		const char *primary, const char *secondary,
+		PurpleRequestCommonParameters *cpar);
 
 	void *(*notify_email)(PurpleConnection *gc,
 	                      const char *subject, const char *from,
@@ -330,6 +332,8 @@
  * @param title     The title of the message.
  * @param primary   The main point of the message.
  * @param secondary The secondary information.
+ * @param cpar      The #PurpleRequestCommonParameters associated with this
+ *                  request, or @c NULL if none is.
  * @param cb        The callback to call when the user closes
  *                  the notification.
  * @param user_data The data to pass to the callback.
@@ -337,9 +341,9 @@
  * @return A UI-specific handle.
  */
 void *purple_notify_message(void *handle, PurpleNotifyMsgType type,
-						  const char *title, const char *primary,
-						  const char *secondary, PurpleNotifyCloseCallback cb,
-						  gpointer user_data);
+	const char *title, const char *primary, const char *secondary,
+	PurpleRequestCommonParameters *cpar, PurpleNotifyCloseCallback cb,
+	gpointer user_data);
 
 /**
  * Displays a single email notification to the user.
@@ -672,23 +676,23 @@
 /**
  * A wrapper for purple_notify_message that displays an information message.
  */
-#define purple_notify_info(handle, title, primary, secondary) \
+#define purple_notify_info(handle, title, primary, secondary, cpar) \
 	purple_notify_message((handle), PURPLE_NOTIFY_MSG_INFO, (title), \
-						(primary), (secondary), NULL, NULL)
+		(primary), (secondary), (cpar), NULL, NULL)
 
 /**
  * A wrapper for purple_notify_message that displays a warning message.
  */
-#define purple_notify_warning(handle, title, primary, secondary) \
+#define purple_notify_warning(handle, title, primary, secondary, cpar) \
 	purple_notify_message((handle), PURPLE_NOTIFY_MSG_WARNING, (title), \
-						(primary), (secondary), NULL, NULL)
+		(primary), (secondary), (cpar), NULL, NULL)
 
 /**
  * A wrapper for purple_notify_message that displays an error message.
  */
-#define purple_notify_error(handle, title, primary, secondary) \
+#define purple_notify_error(handle, title, primary, secondary, cpar) \
 	purple_notify_message((handle), PURPLE_NOTIFY_MSG_ERROR, (title), \
-						(primary), (secondary), NULL, NULL)
+		(primary), (secondary), (cpar), NULL, NULL)
 
 /*@}*/
 
--- a/libpurple/plugins/autoaccept.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/autoaccept.c	Sat Sep 21 17:01:08 2013 +0530
@@ -78,7 +78,9 @@
 	{
 		char *message = g_strdup_printf(_("Autoaccepted file transfer of \"%s\" from \"%s\" completed."),
 					purple_xfer_get_filename(xfer), purple_xfer_get_remote_user(xfer));
-		purple_notify_info(NULL, _("Autoaccept complete"), message, NULL);
+		purple_notify_info(NULL, _("Autoaccept complete"), message,
+			NULL, purple_request_cpar_from_account(
+				purple_xfer_get_account(xfer)));
 		g_free(message);
 	}
 }
--- a/libpurple/plugins/helloworld.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/helloworld.c	Sat Sep 21 17:01:08 2013 +0530
@@ -60,7 +60,7 @@
 {
 	purple_notify_message (helloworld_plugin, PURPLE_NOTIFY_MSG_INFO,
 		"Plugin Actions Test", "This is a plugin actions test :)", NULL, NULL,
-		NULL);
+		NULL, NULL);
 }
 
 /* we tell libpurple in the PurplePluginInfo struct to call this function to
@@ -120,7 +120,7 @@
 {
 	purple_notify_message (plugin, PURPLE_NOTIFY_MSG_INFO, "Hello World!",
 		"This is the Hello World! plugin :)", NULL, NULL,
-		NULL);
+		NULL, NULL);
 
 	helloworld_plugin = plugin; /* assign this here so we have a valid handle later */
 
--- a/libpurple/plugins/idle.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/idle.c	Sat Sep 21 17:01:08 2013 +0530
@@ -177,7 +177,7 @@
 
 	if (idled_accts == NULL)
 	{
-		purple_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL);
+		purple_notify_info(NULL, NULL, _("None of your accounts are idle."), NULL, NULL);
 		return;
 	}
 
--- a/libpurple/plugins/keyrings/internalkeyring.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/keyrings/internalkeyring.c	Sat Sep 21 17:01:08 2013 +0530
@@ -531,7 +531,8 @@
 			_("Unlocking internal keyring"),
 			_("Selected encryption method is not supported."),
 			_("Most probably, your passwords were encrypted with "
-			"newer Pidgin/libpurple version, please update."));
+			"newer Pidgin/libpurple version, please update."),
+			NULL);
 		return;
 	}
 
@@ -909,7 +910,7 @@
 	if (g_strcmp0(passphrase, passphrase2) != 0) {
 		purple_notify_error(notify_handle,
 			_("Internal keyring settings"),
-			_("Passphrases do not match"), NULL);
+			_("Passphrases do not match"), NULL, NULL);
 		return FALSE;
 	}
 
@@ -919,7 +920,7 @@
 		purple_notify_error(notify_handle,
 			_("Internal keyring settings"),
 			_("You have to set up a Master password, if you want "
-			"to enable encryption"), NULL);
+			"to enable encryption"), NULL, NULL);
 		return FALSE;
 	}
 
@@ -929,7 +930,7 @@
 		purple_notify_error(notify_handle,
 			_("Internal keyring settings"),
 			_("You don't need any master password, if you won't "
-			"enable passwords encryption"), NULL);
+			"enable passwords encryption"), NULL, NULL);
 		return FALSE;
 	}
 
--- a/libpurple/plugins/notify_example.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/notify_example.c	Sat Sep 21 17:01:08 2013 +0530
@@ -58,21 +58,21 @@
 notify_error_cb(PurplePluginAction *action)
 {
 	purple_notify_error(notify_example, "Test Notification", "Test Notification",
-		"This is a test error notification");
+		"This is a test error notification", NULL);
 }
 
 static void
 notify_info_cb(PurplePluginAction *action)
 {
 	purple_notify_info(notify_example, "Test Notification", "Test Notification",
-		"This is a test informative notification");
+		"This is a test informative notification", NULL);
 }
 
 static void
 notify_warn_cb(PurplePluginAction *action)
 {
 	purple_notify_warning(notify_example, "Test Notification", "Test Notification",
-		"This is a test warning notification");
+		"This is a test warning notification", NULL);
 }
 
 static void
--- a/libpurple/plugins/perl/common/Notify.xs	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/perl/common/Notify.xs	Sat Sep 21 17:01:08 2013 +0530
@@ -102,6 +102,10 @@
 	const char *secondary
 	Purple::NotifyCloseCallback cb
 	gpointer user_data
+CODE:
+	RETVAL = purple_notify_message(handle, type, title, primary, secondary, NULL, cb, user_data);
+OUTPUT:
+	RETVAL
 
 void *
 purple_notify_searchresults(gc, title, primary, secondary, results, cb, user_data)
--- a/libpurple/plugins/tcl/tcl_cmds.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/plugins/tcl/tcl_cmds.c	Sat Sep 21 17:01:08 2013 +0530
@@ -999,7 +999,7 @@
 		msg2 = Tcl_GetString(objv[4]);
 	}
 
-	purple_notify_message(_tcl_plugin, optind[type], title, msg1, msg2, NULL, NULL);
+	purple_notify_message(_tcl_plugin, optind[type], title, msg1, msg2, NULL, NULL, NULL);
 
 	return TCL_OK;
 }
--- a/libpurple/protocols/gg/account.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/gg/account.c	Sat Sep 21 17:01:08 2013 +0530
@@ -125,7 +125,8 @@
 		purple_notify_error(
 			purple_connection_get_account(reqdata->gc),
 			_("Token Error"),
-			_("Unable to fetch the token."), NULL);
+			_("Unable to fetch the token."), NULL,
+			purple_request_cpar_from_connection(reqdata->gc));
 	}
 	
 	reqdata->callback(reqdata->gc, token, reqdata->user_data);
@@ -347,7 +348,8 @@
 		purple_notify_error(NULL,
 			GGP_ACCOUNT_REGISTER_TITLE,
 			_("Unable to register new account. "
-			"An unknown error occurred."), NULL);
+			"An unknown error occurred."), NULL,
+			purple_request_cpar_from_account(account));
 		ggp_account_register_completed(register_data, FALSE);
 		return;
 	}
@@ -364,7 +366,8 @@
 	
 	tmp = g_strdup_printf(_("Your new GG number: %u."), uin);
 	purple_notify_info(account, GGP_ACCOUNT_REGISTER_TITLE,
-		_("Registration completed successfully!"), tmp);
+		_("Registration completed successfully!"), tmp,
+		purple_request_cpar_from_account(account));
 	g_free(tmp);
 	
 	ggp_account_register_completed(register_data, TRUE);
@@ -595,7 +598,8 @@
 	ggp_account_chpass_dialog(chpass_data->gc, chpass_data->token,
 		chpass_data);
 	purple_notify_error(purple_connection_get_account(chpass_data->gc),
-		GGP_ACCOUNT_CHPASS_TITLE, message, NULL);
+		GGP_ACCOUNT_CHPASS_TITLE, message, NULL,
+		purple_request_cpar_from_connection(chpass_data->gc));
 }
 
 static void ggp_account_chpass_dialog_cancel(
@@ -629,7 +633,8 @@
 		purple_notify_error(NULL,
 			GGP_ACCOUNT_CHPASS_TITLE,
 			_("Unable to change password. "
-			"An unknown error occurred."), NULL);
+			"An unknown error occurred."), NULL,
+			purple_request_cpar_from_connection(chpass_data->gc));
 		ggp_account_chpass_data_free(chpass_data);
 		return;
 	}
@@ -641,7 +646,8 @@
 		NULL, NULL);
 
 	purple_notify_info(account, GGP_ACCOUNT_CHPASS_TITLE,
-		_("Your password has been changed."), NULL);
+		_("Your password has been changed."), NULL,
+		purple_request_cpar_from_connection(chpass_data->gc));
 	
 	ggp_account_chpass_data_free(chpass_data);
 	
--- a/libpurple/protocols/gg/deprecated.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/gg/deprecated.c	Sat Sep 21 17:01:08 2013 +0530
@@ -41,7 +41,9 @@
 	{
 		gg_proxy_enabled = 0;
 		purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
-			_("Either the host name or port number specified for your given proxy type is invalid."));
+			_("Either the host name or port number specified for "
+			"your given proxy type is invalid."),
+			purple_request_cpar_from_connection(gc));
 		return FALSE;
 	}
 	
--- a/libpurple/protocols/gg/gg.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/gg/gg.c	Sat Sep 21 17:01:08 2013 +0530
@@ -99,7 +99,8 @@
 	purple_notify_error(gc, _("Authentication failed"),
 		_("IMToken value has not been received."),
 		_("Some features will be disabled. "
-		"You may try again after a while."));
+		"You may try again after a while."),
+		purple_request_cpar_from_connection(gc));
 	return NULL;
 }
 
@@ -122,21 +123,22 @@
 	purple_debug_info("gg", "file = %s\n", filename);
 
 	if (buddylist == NULL) {
-		purple_notify_info(account, _("Save Buddylist..."),
-			 _("Your buddylist is empty, nothing was written to the file."),
-			 NULL);
+		purple_notify_info(account, _("Save Buddylist..."), _("Your "
+			"buddylist is empty, nothing was written to the file."),
+			NULL, purple_request_cpar_from_connection(gc));
 		return;
 	}
 
 	if(purple_util_write_data_to_file_absolute(filename, buddylist, -1)) {
 		purple_notify_info(account, _("Save Buddylist..."),
-			 _("Buddylist saved successfully!"), NULL);
+			_("Buddylist saved successfully!"), NULL,
+			purple_request_cpar_from_connection(gc));
 	} else {
 		gchar *primary = g_strdup_printf(
 			_("Couldn't write buddy list for %s to %s"),
 			purple_account_get_username(account), filename);
 		purple_notify_error(account, _("Save Buddylist..."),
-			primary, NULL);
+			primary, NULL, purple_request_cpar_from_connection(gc));
 		g_free(primary);
 	}
 
@@ -153,10 +155,9 @@
 	purple_debug_info("gg", "file_name = %s\n", file);
 
 	if (!g_file_get_contents(file, &buddylist, &length, &error)) {
-		purple_notify_error(account,
-				_("Couldn't load buddylist"),
-				_("Couldn't load buddylist"),
-				error->message);
+		purple_notify_error(account, _("Couldn't load buddylist"),
+			_("Couldn't load buddylist"), error->message,
+			purple_request_cpar_from_connection(gc));
 
 		purple_debug_error("gg",
 			"Couldn't load buddylist. file = %s; error = %s\n",
@@ -170,9 +171,9 @@
 	ggp_buddylist_load(gc, buddylist);
 	g_free(buddylist);
 
-	purple_notify_info(account,
-			 _("Load Buddylist..."),
-			 _("Buddylist loaded successfully!"), NULL);
+	purple_notify_info(account, _("Load Buddylist..."),
+		_("Buddylist loaded successfully!"), NULL,
+		purple_request_cpar_from_connection(gc));
 }
 /* }}} */
 
--- a/libpurple/protocols/gg/pubdir-prpl.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/gg/pubdir-prpl.c	Sat Sep 21 17:01:08 2013 +0530
@@ -671,7 +671,8 @@
 		(records_count == 0 && form->offset != 0))
 	{
 		purple_notify_error(gc, GGP_PUBDIR_SEARCH_TITLE,
-			_("Error while searching for buddies"), NULL);
+			_("Error while searching for buddies"), NULL,
+			purple_request_cpar_from_connection(gc));
 		ggp_pubdir_search_form_free(form);
 		return;
 	}
@@ -680,7 +681,8 @@
 	{
 		purple_notify_info(gc, GGP_PUBDIR_SEARCH_TITLE,
 			_("No matching users found"),
-			_("There are no users matching your search criteria."));
+			_("There are no users matching your search criteria."),
+			purple_request_cpar_from_connection(gc));
 		ggp_pubdir_search_form_free(form);
 		return;
 	}
--- a/libpurple/protocols/irc/dcc_send.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/irc/dcc_send.c	Sat Sep 21 17:01:08 2013 +0530
@@ -303,7 +303,8 @@
 
 	if (sock < 0) {
 		purple_notify_error(gc, NULL, _("File Transfer Failed"),
-		                    _("Unable to open a listening port."));
+			_("Unable to open a listening port."),
+			purple_request_cpar_from_connection(gc));
 		purple_xfer_cancel_local(xfer);
 		return;
 	}
@@ -344,7 +345,8 @@
 	if (xd->listen_data == NULL) {
 		g_object_unref(xfer);
 		purple_notify_error(gc, NULL, _("File Transfer Failed"),
-		                    _("Unable to open a listening port."));
+			_("Unable to open a listening port."),
+			purple_request_cpar_from_connection(gc));
 		purple_xfer_cancel_local(xfer);
 	}
 
--- a/libpurple/protocols/irc/irc.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/irc/irc.c	Sat Sep 21 17:01:08 2013 +0530
@@ -74,8 +74,10 @@
 	}
 	irc = purple_connection_get_protocol_data(gc);
 	if (irc->motd == NULL) {
-		purple_notify_error(gc, _("Error displaying MOTD"), _("No MOTD available"),
-				  _("There is no MOTD associated with this connection."));
+		purple_notify_error(gc, _("Error displaying MOTD"),
+			_("No MOTD available"),
+			_("There is no MOTD associated with this connection."),
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 	title = g_strdup_printf(_("MOTD for %s"), irc->server);
--- a/libpurple/protocols/irc/msgs.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/irc/msgs.c	Sat Sep 21 17:01:08 2013 +0530
@@ -260,7 +260,8 @@
 	if (!args || !args[1] || !gc)
 		return;
 
-	purple_notify_error(gc, NULL, _("Bad mode"), args[1]);
+	purple_notify_error(gc, NULL, _("Bad mode"), args[1],
+		purple_request_cpar_from_connection(gc));
 }
 
 void irc_msg_ban(struct irc_conn *irc, const char *name, const char *from, char **args)
@@ -316,7 +317,8 @@
 		return;
 
 	buf = g_strdup_printf(_("You are banned from %s."), args[1]);
-	purple_notify_error(gc, _("Banned"), _("Banned"), buf);
+	purple_notify_error(gc, _("Banned"), _("Banned"), buf,
+		purple_request_cpar_from_connection(gc));
 	g_free(buf);
 }
 
@@ -668,7 +670,9 @@
 		return;
 
 	buf = g_strdup_printf(_("Unknown message '%s'"), args[1]);
-	purple_notify_error(gc, _("Unknown message"), buf, _("The IRC server received a message it did not understand."));
+	purple_notify_error(gc, _("Unknown message"), buf, _("The IRC server "
+		"received a message it did not understand."),
+		purple_request_cpar_from_connection(gc));
 	g_free(buf);
 }
 
@@ -800,8 +804,8 @@
 		return;
 
 	purple_notify_message(gc, PURPLE_NOTIFY_MSG_INFO, _("Time Response"),
-			    _("The IRC server's local time is:"),
-			    args[2], NULL, NULL);
+		_("The IRC server's local time is:"), args[2], NULL, NULL,
+		purple_request_cpar_from_connection(gc));
 }
 
 void irc_msg_nochan(struct irc_conn *irc, const char *name, const char *from, char **args)
@@ -811,7 +815,8 @@
 	if (gc == NULL || args == NULL || args[1] == NULL)
 		return;
 
-	purple_notify_error(gc, NULL, _("No such channel"), args[1]);
+	purple_notify_error(gc, NULL, _("No such channel"), args[1],
+		purple_request_cpar_from_connection(gc));
 }
 
 void irc_msg_nonick(struct irc_conn *irc, const char *name, const char *from, char **args)
@@ -828,7 +833,8 @@
 	} else {
 		if ((gc = purple_account_get_connection(irc->account)) == NULL)
 			return;
-		purple_notify_error(gc, NULL, _("No such nick or channel"), args[1]);
+		purple_notify_error(gc, NULL, _("No such nick or channel"),
+			args[1], purple_request_cpar_from_connection(gc));
 	}
 
 	if (irc->whois.nick && !purple_utf8_strcasecmp(irc->whois.nick, args[1])) {
@@ -849,7 +855,8 @@
 	} else {
 		if ((gc = purple_account_get_connection(irc->account)) == NULL)
 			return;
-		purple_notify_error(gc, NULL, _("Could not send"), args[2]);
+		purple_notify_error(gc, NULL, _("Could not send"), args[2],
+			purple_request_cpar_from_connection(gc));
 	}
 }
 
@@ -907,7 +914,8 @@
 		return;
 
 	buf = g_strdup_printf(_("Joining %s requires an invitation."), args[1]);
-	purple_notify_error(gc, _("Invitation only"), _("Invitation only"), buf);
+	purple_notify_error(gc, _("Invitation only"), _("Invitation only"), buf,
+		purple_request_cpar_from_connection(gc));
 	g_free(buf);
 }
 
@@ -1156,9 +1164,10 @@
 {
 	PurpleConnection *gc = purple_account_get_connection(irc->account);
 	if (purple_connection_get_state(gc) == PURPLE_CONNECTION_CONNECTED) {
-		purple_notify_error(gc, _("Invalid nickname"),
-				  _("Invalid nickname"),
-				  _("Your selected nickname was rejected by the server.  It probably contains invalid characters."));
+		purple_notify_error(gc, _("Invalid nickname"), _("Invalid "
+			"nickname"), _("Your selected nickname was rejected by "
+			"the server.  It probably contains invalid characters."),
+			purple_request_cpar_from_connection(gc));
 
 	} else {
 		purple_connection_error (gc,
@@ -1181,8 +1190,8 @@
 		   notify the user that their /nick command didn't go. */
 		buf = g_strdup_printf(_("The nickname \"%s\" is already being used."),
 				      irc->reqnick);
-		purple_notify_error(gc, _("Nickname in use"),
-				    _("Nickname in use"), buf);
+		purple_notify_error(gc, _("Nickname in use"), _("Nickname in "
+			"use"), buf, purple_request_cpar_from_connection(gc));
 		g_free(buf);
 		g_free(irc->reqnick);
 		irc->reqnick = NULL;
@@ -1226,7 +1235,9 @@
 	if (!args || !args[2] || !gc)
 		return;
 
-	purple_notify_error(gc, _("Cannot change nick"), _("Could not change nick"), args[2]);
+	purple_notify_error(gc, _("Cannot change nick"),
+		_("Could not change nick"), args[2],
+		purple_request_cpar_from_connection(gc));
 }
 
 void irc_msg_part(struct irc_conn *irc, const char *name, const char *from, char **args)
@@ -1310,7 +1321,8 @@
 			g_free(msg);
 			return;
 		}
-		purple_notify_info(gc, NULL, "PONG", msg);
+		purple_notify_info(gc, NULL, "PONG", msg,
+			purple_request_cpar_from_connection(gc));
 	}
 	g_free(msg);
 }
@@ -1384,7 +1396,8 @@
 	}
 
 	msg = g_strdup_printf(_("Cannot join %s: Registration is required."), args[1]);
-	purple_notify_error(gc, _("Cannot join channel"), msg, args[2]);
+	purple_notify_error(gc, _("Cannot join channel"), msg, args[2],
+		purple_request_cpar_from_connection(gc));
 	g_free(msg);
 }
 
@@ -1419,7 +1432,9 @@
 	if (!args || !args[1])
 		return;
 
-	purple_notify_error(gc, NULL, _("Nick or channel is temporarily unavailable."), args[1]);
+	purple_notify_error(gc, NULL, _("Nick or channel is temporarily "
+		"unavailable."), args[1],
+		purple_request_cpar_from_connection(gc));
 }
 
 void irc_msg_wallops(struct irc_conn *irc, const char *name, const char *from, char **args)
@@ -1433,7 +1448,8 @@
 	nick = irc_mask_nick(from);
 	msg = g_strdup_printf (_("Wallops from %s"), nick);
 	g_free(nick);
-	purple_notify_info(gc, NULL, msg, args[0]);
+	purple_notify_info(gc, NULL, msg, args[0],
+		purple_request_cpar_from_connection(gc));
 	g_free(msg);
 }
 
--- a/libpurple/protocols/irc/parse.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/irc/parse.c	Sat Sep 21 17:01:08 2013 +0530
@@ -578,7 +578,9 @@
 			/* TODO: Should this read in the timestamp as a double? */
 			if (sscanf(cur, "PING %lu", &timestamp) == 1) {
 				buf = g_strdup_printf(_("Reply time from %s: %lu seconds"), from, time(NULL) - timestamp);
-				purple_notify_info(gc, _("PONG"), _("CTCP PING reply"), buf);
+				purple_notify_info(gc, _("PONG"),
+					_("CTCP PING reply"), buf,
+					purple_request_cpar_from_connection(gc));
 				g_free(buf);
 			} else
 				purple_debug(PURPLE_DEBUG_ERROR, "irc", "Unable to parse PING timestamp");
--- a/libpurple/protocols/jabber/adhoccommands.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/adhoccommands.c	Sat Sep 21 17:01:08 2013 +0530
@@ -161,7 +161,8 @@
 			msg = g_strdup(_("Unknown Error"));
 
 		purple_notify_error(NULL, _("Ad-Hoc Command Failed"),
-							_("Ad-Hoc Command Failed"), msg);
+			_("Ad-Hoc Command Failed"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 		return;
 	}
@@ -175,7 +176,8 @@
 
 		if(note) {
 			char *data = purple_xmlnode_get_data(note);
-			purple_notify_info(NULL, from, data, NULL);
+			purple_notify_info(NULL, from, data, NULL,
+				purple_request_cpar_from_connection(js->gc));
 			g_free(data);
 		}
 
--- a/libpurple/protocols/jabber/buddy.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/buddy.c	Sat Sep 21 17:01:08 2013 +0530
@@ -2161,7 +2161,8 @@
 			msg = g_strdup(_("Unknown error"));
 
 		purple_notify_error(js->gc, _("Directory Query Failed"),
-				  _("Could not query the directory server."), msg);
+			_("Could not query the directory server."), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 
 		return;
@@ -2248,7 +2249,9 @@
 
 	/* XXX: should probably better validate the directory we're given */
 	if(!directory || !*directory) {
-		purple_notify_error(js->gc, _("Invalid Directory"), _("Invalid Directory"), NULL);
+		purple_notify_error(js->gc, _("Invalid Directory"),
+			_("Invalid Directory"), NULL,
+			purple_request_cpar_from_connection(js->gc));
 		return;
 	}
 
--- a/libpurple/protocols/jabber/chat.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/chat.c	Sat Sep 21 17:01:08 2013 +0530
@@ -377,21 +377,23 @@
 	if(!jabber_nodeprep_validate(room)) {
 		char *buf = g_strdup_printf(_("%s is not a valid room name"), room);
 		purple_notify_error(gc, _("Invalid Room Name"), _("Invalid Room Name"),
-				buf);
+			buf, purple_request_cpar_from_connection(gc));
 		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
 	} else if(!jabber_domain_validate(server)) {
 		char *buf = g_strdup_printf(_("%s is not a valid server name"), server);
 		purple_notify_error(gc, _("Invalid Server Name"),
-				_("Invalid Server Name"), buf);
+			_("Invalid Server Name"), buf,
+			purple_request_cpar_from_connection(gc));
 		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
 	} else if(!jabber_resourceprep_validate(handle)) {
 		char *buf = g_strdup_printf(_("%s is not a valid room handle"), handle);
 		purple_notify_error(gc, _("Invalid Room Handle"),
-				_("Invalid Room Handle"), buf);
+			_("Invalid Room Handle"), buf,
+			purple_request_cpar_from_connection(gc));
 		purple_serv_got_join_chat_failed(gc, data);
 		g_free(buf);
 		return;
@@ -534,7 +536,9 @@
 	} else if (type == JABBER_IQ_ERROR) {
 		char *msg = jabber_parse_error(js, packet, NULL);
 
-		purple_notify_error(js->gc, _("Configuration error"), _("Configuration error"), msg);
+		purple_notify_error(js->gc, _("Configuration error"),
+			_("Configuration error"), msg,
+			purple_request_cpar_from_connection(js->gc));
 
 		if(msg)
 			g_free(msg);
@@ -543,7 +547,9 @@
 
 	msg = g_strdup_printf("Unable to configure room %s", from);
 
-	purple_notify_info(js->gc, _("Unable to configure"), _("Unable to configure"), msg);
+	purple_notify_info(js->gc, _("Unable to configure"),
+		_("Unable to configure"), msg,
+		purple_request_cpar_from_connection(js->gc));
 	g_free(msg);
 
 }
@@ -558,8 +564,10 @@
 	chat->config_dialog_handle = NULL;
 
 	if(!chat->muc) {
-		purple_notify_error(chat->js->gc, _("Room Configuration Error"), _("Room Configuration Error"),
-				_("This room is not capable of being configured"));
+		purple_notify_error(chat->js->gc, _("Room Configuration Error"),
+			_("Room Configuration Error"),
+			_("This room is not capable of being configured"),
+			purple_request_cpar_from_connection(chat->js->gc));
 		return;
 	}
 
@@ -609,7 +617,9 @@
 	if (type == JABBER_IQ_ERROR) {
 		char *msg = jabber_parse_error(js, packet, NULL);
 
-		purple_notify_error(js->gc, _("Registration error"), _("Registration error"), msg);
+		purple_notify_error(js->gc, _("Registration error"),
+			_("Registration error"), msg,
+			purple_request_cpar_from_connection(js->gc));
 
 		if(msg)
 			g_free(msg);
@@ -678,7 +688,9 @@
 	} else if (type == JABBER_IQ_ERROR) {
 		char *msg = jabber_parse_error(js, packet, NULL);
 
-		purple_notify_error(js->gc, _("Registration error"), _("Registration error"), msg);
+		purple_notify_error(js->gc, _("Registration error"),
+			_("Registration error"), msg,
+			purple_request_cpar_from_connection(js->gc));
 
 		if(msg)
 			g_free(msg);
@@ -687,7 +699,8 @@
 
 	msg = g_strdup_printf("Unable to configure room %s", from);
 
-	purple_notify_info(js->gc, _("Unable to configure"), _("Unable to configure"), msg);
+	purple_notify_info(js->gc, _("Unable to configure"), _("Unable to "
+		"configure"), msg, purple_request_cpar_from_connection(js->gc));
 	g_free(msg);
 
 }
@@ -809,7 +822,8 @@
 	if (type == JABBER_IQ_ERROR) {
 		char *err = jabber_parse_error(js, packet, NULL);
 		purple_notify_error(js->gc, _("Error"),
-				_("Error retrieving room list"), err);
+			_("Error retrieving room list"), err,
+			purple_request_cpar_from_connection(js->gc));
 		purple_roomlist_set_in_progress(js->roomlist, FALSE);
 		g_object_unref(js->roomlist);
 		js->roomlist = NULL;
@@ -820,7 +834,8 @@
 	if(!(query = purple_xmlnode_get_child(packet, "query"))) {
 		char *err = jabber_parse_error(js, packet, NULL);
 		purple_notify_error(js->gc, _("Error"),
-				_("Error retrieving room list"), err);
+			_("Error retrieving room list"), err,
+			purple_request_cpar_from_connection(js->gc));
 		purple_roomlist_set_in_progress(js->roomlist, FALSE);
 		g_object_unref(js->roomlist);
 		js->roomlist = NULL;
@@ -868,7 +883,9 @@
 		return;
 
 	if(!server || !*server) {
-		purple_notify_error(js->gc, _("Invalid Server"), _("Invalid Server"), NULL);
+		purple_notify_error(js->gc, _("Invalid Server"),
+			_("Invalid Server"), NULL,
+			purple_request_cpar_from_connection(js->gc));
 		purple_roomlist_set_in_progress(js->roomlist, FALSE);
 		return;
 	}
--- a/libpurple/protocols/jabber/jabber.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/jabber.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1157,7 +1157,8 @@
 				to);
 		}
 		purple_notify_info(NULL, _("Registration Successful"),
-				_("Registration Successful"), buf);
+			_("Registration Successful"), buf,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(buf);
 	} else {
 		char *msg = jabber_parse_error(js, packet, NULL);
@@ -1166,7 +1167,8 @@
 			msg = g_strdup(_("Unknown Error"));
 
 		purple_notify_error(NULL, _("Registration Failed"),
-				_("Registration Failed"), msg);
+			_("Registration Failed"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 		purple_account_register_completed(account, FALSE);
 	}
@@ -1191,7 +1193,8 @@
 		buf = g_strdup_printf(_("Registration from %s successfully removed"),
 							  to);
 		purple_notify_info(NULL, _("Unregistration Successful"),
-						   _("Unregistration Successful"), buf);
+			_("Unregistration Successful"), buf,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(buf);
 	} else {
 		char *msg = jabber_parse_error(js, packet, NULL);
@@ -1200,7 +1203,8 @@
 			msg = g_strdup(_("Unknown Error"));
 
 		purple_notify_error(NULL, _("Unregistration Failed"),
-							_("Unregistration Failed"), msg);
+			_("Unregistration Failed"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 	}
 	g_free(to);
@@ -1360,7 +1364,8 @@
 
 		if(js->registration) {
 			purple_notify_error(NULL, _("Already Registered"),
-								_("Already Registered"), NULL);
+				_("Already Registered"), NULL,
+				purple_request_cpar_from_connection(js->gc));
 			purple_account_register_completed(account, FALSE);
 			jabber_connection_schedule_close(js);
 			return;
@@ -1525,13 +1530,15 @@
 		char *msg = jabber_parse_error(js, packet, NULL);
 
 		purple_notify_error(js->gc, _("Error unregistering account"),
-							_("Error unregistering account"), msg);
+			_("Error unregistering account"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 		if(js->unregistration_cb)
 			js->unregistration_cb(account, FALSE, js->unregistration_user_data);
 	} else {
-		purple_notify_info(js->gc, _("Account successfully unregistered"),
-						   _("Account successfully unregistered"), NULL);
+		purple_notify_info(js->gc, _("Account successfully "
+			"unregistered"), _("Account successfully unregistered"),
+			NULL, purple_request_cpar_from_connection(js->gc));
 		if(js->unregistration_cb)
 			js->unregistration_cb(account, TRUE, js->unregistration_user_data);
 	}
@@ -1914,7 +1921,8 @@
 	if (!(js->server_caps & JABBER_CAP_BLOCKING))
 	{
 		purple_notify_error(NULL, _("Server doesn't support blocking"),
-							_("Server doesn't support blocking"), NULL);
+			_("Server doesn't support blocking"), NULL,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -2473,15 +2481,17 @@
                                  PurpleXmlNode *packet, gpointer data)
 {
 	if (type == JABBER_IQ_RESULT) {
-		purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
-				_("Your password has been changed."));
+		purple_notify_info(js->gc, _("Password Changed"), _("Password "
+			"Changed"), _("Your password has been changed."),
+			purple_request_cpar_from_connection(js->gc));
 
 		purple_account_set_password(purple_connection_get_account(js->gc), (const char *)data, NULL, NULL);
 	} else {
 		char *msg = jabber_parse_error(js, packet, NULL);
 
 		purple_notify_error(js->gc, _("Error changing password"),
-				_("Error changing password"), msg);
+			_("Error changing password"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 	}
 
@@ -2499,7 +2509,9 @@
 	p2 = purple_request_fields_get_string(fields, "password2");
 
 	if(strcmp(p1, p2)) {
-		purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
+		purple_notify_error(js->gc, NULL,
+			_("New passwords do not match."), NULL,
+			purple_request_cpar_from_connection(js->gc));
 		return;
 	}
 
@@ -3311,7 +3323,8 @@
 		}
 
 		purple_notify_error(account, _("Media Initiation Failed"),
-				_("Media Initiation Failed"), msg);
+			_("Media Initiation Failed"), msg,
+			purple_request_cpar_from_connection(gc));
 		g_free(msg);
 		g_free(resource);
 		return FALSE;
--- a/libpurple/protocols/jabber/presence.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/presence.c	Sat Sep 21 17:01:08 2013 +0530
@@ -554,7 +554,8 @@
 			if (g_hash_table_size(chat->members) == 0)
 				serv_got_chat_left(js->gc, chat->id);
 		}
-		purple_notify_error(js->gc, title, title, msg);
+		purple_notify_error(js->gc, title, title, msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(title);
 		g_free(msg);
 
--- a/libpurple/protocols/jabber/si.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/jabber/si.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1433,7 +1433,8 @@
 	} else {
 		char *msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who);
 		purple_notify_error(js->gc, _("File Send Failed"),
-				_("File Send Failed"), msg);
+			_("File Send Failed"), msg,
+			purple_request_cpar_from_connection(js->gc));
 		g_free(msg);
 		purple_xfer_cancel_local(xfer);
 	}
@@ -1474,7 +1475,8 @@
 
 		msg = g_strdup_printf(_("Unable to send file to %s, user does not support file transfers"), who);
 		purple_notify_error(jsx->js->gc, _("File Send Failed"),
-				_("File Send Failed"), msg);
+			_("File Send Failed"), msg,
+			purple_request_cpar_from_connection(jsx->js->gc));
 		g_free(msg);
 		purple_xfer_cancel_local(xfer);
 	} else {
@@ -1543,7 +1545,9 @@
 				msg = g_strdup_printf(_("Unable to send file to %s, not subscribed to user presence"), purple_xfer_get_remote_user(xfer));
 			}
 
-			purple_notify_error(jsx->js->gc, _("File Send Failed"), _("File Send Failed"), msg);
+			purple_notify_error(jsx->js->gc, _("File Send Failed"),
+				_("File Send Failed"), msg,
+				purple_request_cpar_from_connection(jsx->js->gc));
 			g_free(msg);
 		} else if (g_list_length(resources) == 1) {
 			/* only 1 resource online (probably our most common case)
--- a/libpurple/protocols/msn/contact.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/msn/contact.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1069,8 +1069,11 @@
 		} else if (errorcode && !strcmp(errorcode, "InvalidPassportUser")) {
 			PurpleBuddy *buddy = purple_blist_find_buddy(session->account, state->who);
 			char *str = g_strdup_printf(_("Unable to add \"%s\"."), state->who);
-			purple_notify_error(state->session, _("Buddy Add error"), str,
-			                    _("The username specified does not exist."));
+			purple_notify_error(state->session,
+				_("Buddy Add error"), str,
+				_("The username specified does not exist."),
+				purple_request_cpar_from_account(
+					session->account));
 			g_free(str);
 			msn_userlist_rem_buddy(userlist, state->who);
 			if (buddy != NULL)
@@ -1166,7 +1169,9 @@
 			PurpleBuddy *buddy = purple_blist_find_buddy(session->account, state->who);
 			char *str = g_strdup_printf(_("Unable to add \"%s\"."), state->who);
 			purple_notify_error(session, _("Buddy Add error"), str,
-			                    _("The username specified does not exist."));
+				_("The username specified does not exist."),
+				purple_request_cpar_from_account(
+					session->account));
 			g_free(str);
 			msn_userlist_rem_buddy(userlist, state->who);
 			if (buddy != NULL)
--- a/libpurple/protocols/msn/error.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/msn/error.c	Sat Sep 21 17:01:08 2013 +0530
@@ -273,8 +273,12 @@
 	                      msn_error_get_text(type, &debug));
 	if (debug)
 		purple_debug_warning("msn", "error %d: %s\n", type, buf);
-	else
-		purple_notify_error(purple_account_get_connection(session->account), NULL, buf, NULL);
+	else {
+		purple_notify_error(
+			purple_account_get_connection(session->account), NULL,
+			buf, NULL, purple_request_cpar_from_account(
+				session->account));
+	}
 	g_free(buf);
 }
 
--- a/libpurple/protocols/msn/msn.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/msn/msn.c	Sat Sep 21 17:01:08 2013 +0530
@@ -261,9 +261,9 @@
 				closure->failure_cb = failure_cb;
 				purple_timeout_add(0, set_public_alias_length_error, closure);
 			} else {
-				purple_notify_error(pc, NULL,
-				                    _("Your new MSN friendly name is too long."),
-				                    NULL);
+				purple_notify_error(pc, NULL, _("Your new MSN "
+					"friendly name is too long."), NULL,
+					purple_request_cpar_from_connection(pc));
 			}
 			return;
 		}
@@ -747,8 +747,9 @@
 	session = purple_connection_get_protocol_data(gc);
 
 	if (!session->passport_info.email_enabled) {
-		purple_notify_error(gc, NULL,
-						  _("This account does not have email enabled."), NULL);
+		purple_notify_error(gc, NULL, _("This account does not have "
+			"email enabled."), NULL,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -1784,8 +1785,10 @@
 	if (!msn_email_is_valid(bname)) {
 		gchar *buf;
 		buf = g_strdup_printf(_("Unable to add the buddy %s because the username is invalid.  Usernames must be valid email addresses."), bname);
-		if (!purple_conversation_present_error(bname, account, buf))
-			purple_notify_error(pc, NULL, _("Unable to Add"), buf);
+		if (!purple_conversation_present_error(bname, account, buf)) {
+			purple_notify_error(pc, NULL, _("Unable to Add"), buf,
+				purple_request_cpar_from_connection(pc));
+		}
 		g_free(buf);
 
 		/* Remove from local list */
--- a/libpurple/protocols/msn/notification.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/msn/notification.c	Sat Sep 21 17:01:08 2013 +0530
@@ -822,7 +822,7 @@
 
 		purple_notify_error(gc, NULL,
 			_("The following users are missing from your addressbook"),
-			emails->str);
+			emails->str, purple_request_cpar_from_connection(gc));
 		g_string_free(emails, TRUE);
 		purple_xmlnode_free(adl);
 	}
@@ -833,7 +833,8 @@
 			error, adl);
 		g_free(adl);
 
-		purple_notify_error(gc, NULL, _("Unable to add user"), reason);
+		purple_notify_error(gc, NULL, _("Unable to add user"), reason,
+			purple_request_cpar_from_connection(gc));
 		g_free(reason);
 	}
 }
@@ -857,7 +858,8 @@
 		cmd->payload_cbdata = GINT_TO_POINTER(error);
 	} else {
 		char *reason = g_strdup_printf(_("Unknown error (%d)"), error);
-		purple_notify_error(gc, NULL, _("Unable to add user"), reason);
+		purple_notify_error(gc, NULL, _("Unable to add user"), reason,
+			purple_request_cpar_from_connection(gc));
 		g_free(reason);
 	}
 }
@@ -880,7 +882,8 @@
 		error, adl);
 	g_free(adl);
 
-	purple_notify_error(gc, NULL, _("Unable to remove user"), reason);
+	purple_notify_error(gc, NULL, _("Unable to remove user"), reason,
+		purple_request_cpar_from_connection(gc));
 	g_free(reason);
 }
 
@@ -903,7 +906,8 @@
 		cmd->payload_cbdata = GINT_TO_POINTER(error);
 	} else {
 		char *reason = g_strdup_printf(_("Unknown error (%d)"), error);
-		purple_notify_error(gc, NULL, _("Unable to remove user"), reason);
+		purple_notify_error(gc, NULL, _("Unable to remove user"),
+			reason, purple_request_cpar_from_connection(gc));
 		g_free(reason);
 	}
 }
@@ -2248,7 +2252,10 @@
 		}
 
 		if (*buf != '\0')
-			purple_notify_info(purple_account_get_connection(cmdproc->session->account), NULL, buf, NULL);
+			purple_notify_info(purple_account_get_connection(
+				cmdproc->session->account),
+			NULL, buf, NULL, purple_request_cpar_from_account(
+				cmdproc->session->account));
 	}
 
 	g_hash_table_destroy(table);
--- a/libpurple/protocols/msn/userlist.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/msn/userlist.c	Sat Sep 21 17:01:08 2013 +0530
@@ -521,8 +521,9 @@
 
 		char *str = g_strdup_printf(_("Unable to add \"%s\"."), who);
 
-		purple_notify_error(NULL, NULL, str,
-				  _("The username specified is invalid."));
+		purple_notify_error(NULL, NULL, str, _("The username specified "
+			"is invalid."), purple_request_cpar_from_account(
+				userlist->session->account));
 		g_free(str);
 
 		return;
--- a/libpurple/protocols/mxit/client.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/mxit/client.c	Sat Sep 21 17:01:08 2013 +0530
@@ -74,7 +74,7 @@
 void mxit_popup( int type, const char* heading, const char* message )
 {
 	/* (reference: "libpurple/notify.h") */
-	purple_notify_message( NULL, type, _( MXIT_POPUP_WIN_NAME ), heading, message, NULL, NULL );
+	purple_notify_message( NULL, type, _( MXIT_POPUP_WIN_NAME ), heading, message, NULL, NULL, NULL );
 }
 
 
--- a/libpurple/protocols/myspace/myspace.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/myspace/myspace.c	Sat Sep 21 17:01:08 2013 +0530
@@ -134,7 +134,9 @@
 
 		msg = g_strdup_printf(_("No such user: %s"), username);
 		if (!purple_conversation_present_error(username, session->account, msg)) {
-			purple_notify_error(NULL, NULL, _("User lookup"), msg);
+			purple_notify_error(NULL, NULL, _("User lookup"), msg,
+				purple_request_cpar_from_connection(
+					session->gc));
 		}
 
 		g_free(msg);
@@ -1136,7 +1138,10 @@
 						       "%d buddies were added or updated from the server (including buddies already on the server-side list)",
 						       buddy_count),
 					      buddy_count);
-			purple_notify_info(session->account, _("Add contacts from server"), msg, NULL);
+			purple_notify_info(session->account,
+				_("Add contacts from server"), msg, NULL,
+				purple_request_cpar_from_connection(
+					session->gc));
 			g_free(msg);
 			break;
 
@@ -1860,7 +1865,9 @@
 		}
 		purple_connection_error(session->gc, reason, full_errmsg);
 	} else {
-		purple_notify_error(session->account, _("MySpaceIM Error"), full_errmsg, NULL);
+		purple_notify_error(session->account, _("MySpaceIM Error"),
+			full_errmsg, NULL,
+			purple_request_cpar_from_connection(session->gc));
 	}
 
 	g_free(full_errmsg);
@@ -2648,7 +2655,9 @@
 			NULL);
 
 	if (!msim_postprocess_outgoing(session, msg, name, "newprofileid", "reason")) {
-		purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("'addbuddy' command failed."));
+		purple_notify_error(NULL, NULL, _("Failed to add buddy"),
+			_("'addbuddy' command failed."),
+			purple_request_cpar_from_connection(session->gc));
 		msim_msg_free(msg);
 		return;
 	}
@@ -2682,7 +2691,9 @@
 
 	if (!msim_postprocess_outgoing(session, msg_persist, name, "body", NULL))
 	{
-		purple_notify_error(NULL, NULL, _("Failed to add buddy"), _("persist command failed"));
+		purple_notify_error(NULL, NULL, _("Failed to add buddy"),
+			_("persist command failed"),
+			purple_request_cpar_from_connection(session->gc));
 		msim_msg_free(msg_persist);
 		return;
 	}
@@ -2713,7 +2724,9 @@
 				NULL);
 
 	if (!msim_postprocess_outgoing(session, delbuddy_msg, name, "delprofileid", NULL)) {
-		purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("'delbuddy' command failed"));
+		purple_notify_error(NULL, NULL, _("Failed to remove buddy"),
+			_("'delbuddy' command failed"),
+			purple_request_cpar_from_connection(session->gc));
 		msim_msg_free(delbuddy_msg);
 		return;
 	}
@@ -2732,7 +2745,9 @@
 			NULL);
 
 	if (!msim_postprocess_outgoing(session, persist_msg, name, "body", NULL)) {
-		purple_notify_error(NULL, NULL, _("Failed to remove buddy"), _("persist command failed"));
+		purple_notify_error(NULL, NULL, _("Failed to remove buddy"),
+			_("persist command failed"),
+			purple_request_cpar_from_connection(session->gc));
 		msim_msg_free(persist_msg);
 		return;
 	}
@@ -2744,8 +2759,9 @@
 	 * does it)
 	 */
 	if (!msim_update_blocklist_for_buddy(session, name, FALSE, FALSE)) {
-		purple_notify_error(NULL, NULL,
-				_("Failed to remove buddy"), _("blocklist command failed"));
+		purple_notify_error(NULL, NULL, _("Failed to remove buddy"),
+			_("blocklist command failed"),
+			purple_request_cpar_from_connection(session->gc));
 		return;
 	}
 	msim_buddy_free(buddy);
@@ -3020,7 +3036,8 @@
 		purple_debug_info("msim_import_friends_cb",
 				"failed to import friends: %s", completed);
 		purple_notify_error(session->account, _("Add friends from MySpace.com"),
-				_("Importing friends failed"), NULL);
+				_("Importing friends failed"), NULL,
+				purple_request_cpar_from_connection(session->gc));
 		g_free(completed);
 		return;
 	}
@@ -3344,7 +3361,7 @@
 	if (!account) {
 		purple_notify_error(NULL, _("myim URL handler"),
 				_("No suitable MySpaceIM account could be found to open this myim URL."),
-				_("Enable the proper MySpaceIM account and try again."));
+				_("Enable the proper MySpaceIM account and try again."), NULL);
 		g_free(cid_str);
 		return FALSE;
 	}
--- a/libpurple/protocols/novell/novell.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/novell/novell.c	Sat Sep 21 17:01:08 2013 +0530
@@ -256,7 +256,8 @@
 										  " Could not get details for user (%s)."),
 						    nm_error_to_string (ret_code));
 
-			purple_notify_error(gc, NULL, err, NULL);
+			purple_notify_error(gc, NULL, err, NULL,
+				purple_request_cpar_from_connection(gc));
 			g_free(err);
 		}
 
@@ -403,7 +404,8 @@
 		err =
 			g_strdup_printf(_("Unable to add %s to your buddy list (%s)."),
 					name, nm_error_to_string (ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -429,7 +431,8 @@
 		/* TODO: Improve this! message to who or for what conference? */
 		err = g_strdup_printf(_("Unable to send message (%s)."),
 				      nm_error_to_string (ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 	}
 }
@@ -499,7 +502,8 @@
 	if (ret_code != NM_OK) {
 		gc = purple_account_get_connection(user->client_data);
 		err = g_strdup_printf(_("Unable to invite user (%s)."), nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 		purple_debug(PURPLE_DEBUG_INFO, "novell",
@@ -546,7 +550,8 @@
 										" Could not create the conference (%s)."),
 						      nm_error_to_string (ret_code));
 
-			purple_notify_error(gc, NULL, err, NULL);
+			purple_notify_error(gc, NULL, err, NULL,
+				purple_request_cpar_from_connection(gc));
 			g_free(err);
 		}
 
@@ -596,7 +601,8 @@
 					    folder_name,
 					    nm_error_to_string (ret_code));
 
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 	}
 
@@ -641,7 +647,8 @@
 					  " Error creating folder in server side list (%s)."),
 					name, nm_error_to_string (ret_code));
 
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 
 		nm_release_contact(contact);
 		g_free(err);
@@ -712,7 +719,8 @@
 		err =
 			g_strdup_printf(_("Could not get details for user %s (%s)."),
 					name, nm_error_to_string (ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 	}
 
@@ -760,7 +768,8 @@
 
 		err = g_strdup_printf(_("Unable to add user to privacy list (%s)."),
 							  nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -809,7 +818,8 @@
 
 		err = g_strdup_printf(_("Unable to add %s to deny list (%s)."),
 							  who, nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -864,7 +874,8 @@
 
 		err = g_strdup_printf(_("Unable to add %s to permit list (%s)."), who,
 							  nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -910,7 +921,8 @@
 
 		err = g_strdup_printf(_("Unable to add user to privacy list (%s)."),
 							  nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -932,7 +944,8 @@
 		gc = purple_account_get_connection(user->client_data);
 		err = g_strdup_printf(_("Unable to remove %s from privacy list (%s)."), who,
 							  nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 	}
 
@@ -955,7 +968,8 @@
 		gc = purple_account_get_connection(user->client_data);
 		err = g_strdup_printf(_("Unable to change server side privacy settings (%s)."),
 							  nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -997,7 +1011,8 @@
 	} else {
 
 		err = g_strdup_printf(_("Unable to invite user (%s)."), nm_error_to_string(ret_code));
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 
 	}
@@ -1025,7 +1040,8 @@
 	} else {
 		err = g_strdup_printf(_("Unable to create conference (%s)."), nm_error_to_string(ret_code));
 		gc = purple_account_get_connection(user->client_data);
-		purple_notify_error(gc, NULL, err, NULL);
+		purple_notify_error(gc, NULL, err, NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(err);
 	}
 }
@@ -1673,7 +1689,8 @@
 
 	err = g_strdup_printf(_("Unable to change server side privacy settings (%s)."),
 						  nm_error_to_string(NMERR_ADMIN_LOCKED));
-	purple_notify_error(gc, NULL, err, NULL);
+	purple_notify_error(gc, NULL, err, NULL,
+		purple_request_cpar_from_connection(gc));
 	g_free(err);
 }
 
--- a/libpurple/protocols/oscar/family_chatnav.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/oscar/family_chatnav.c	Sat Sep 21 17:01:08 2013 +0530
@@ -63,7 +63,9 @@
 				"Could not join room, error=0x%04hx, chatnav_error=0x%04hx\n",
 				error, chatnav_error);
 		purple_notify_error(od->gc, NULL, _("Could not join chat room"),
-				chatnav_error == 0x0033 ? _("Invalid chat room name") : _("Unknown error"));
+			chatnav_error == 0x0033 ? _("Invalid chat room name") :
+				_("Unknown error"),
+			purple_request_cpar_from_connection(od->gc));
 
 		ret = 1;
 	}
--- a/libpurple/protocols/oscar/family_icbm.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/oscar/family_icbm.c	Sat Sep 21 17:01:08 2013 +0530
@@ -183,7 +183,8 @@
 		else
 			buf = g_strdup_printf(_("Unable to send message to %s: %s"),
 			                      bn ? bn : "(unknown)", reason_str);
-		purple_notify_error(od->gc, NULL, buf, reason_str);
+		purple_notify_error(od->gc, NULL, buf, reason_str,
+			purple_request_cpar_from_connection(od->gc));
 	}
 	g_free(buf);
 
--- a/libpurple/protocols/oscar/oscar.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/oscar/oscar.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1759,23 +1759,21 @@
 		case 0x07: { /* Someone has denied you authorization */
 			if (i >= 1) {
 				gchar *dialog_msg = g_strdup_printf(_("The user %u has denied your request to add them to your buddy list for the following reason:\n%s"), args->uin, msg2[0] ? msg2[0] : _("No reason given."));
-				purple_notify_info(gc, NULL, _("ICQ authorization denied."),
-								 dialog_msg);
+				purple_notify_info(gc, NULL, _("ICQ authorization denied."), dialog_msg, purple_request_cpar_from_connection(gc));
 				g_free(dialog_msg);
 			}
 		} break;
 
 		case 0x08: { /* Someone has granted you authorization */
 			gchar *dialog_msg = g_strdup_printf(_("The user %u has granted your request to add them to your buddy list."), args->uin);
-			purple_notify_info(gc, NULL, "ICQ authorization accepted.",
-							 dialog_msg);
+			purple_notify_info(gc, NULL, "ICQ authorization accepted.", dialog_msg, purple_request_cpar_from_connection(gc));
 			g_free(dialog_msg);
 		} break;
 
 		case 0x09: { /* Message from the Godly ICQ server itself, I think */
 			if (i >= 5) {
 				gchar *dialog_msg = g_strdup_printf(_("You have received a special message\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
-				purple_notify_info(gc, NULL, "ICQ Server Message", dialog_msg);
+				purple_notify_info(gc, NULL, "ICQ Server Message", dialog_msg, purple_request_cpar_from_connection(gc));
 				g_free(dialog_msg);
 			}
 		} break;
@@ -1783,7 +1781,7 @@
 		case 0x0d: { /* Someone has sent you a pager message from http://www.icq.com/your_uin */
 			if (i >= 6) {
 				gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ page\n\nFrom: %s [%s]\n%s"), msg2[0], msg2[3], msg2[5]);
-				purple_notify_info(gc, NULL, "ICQ Page", dialog_msg);
+				purple_notify_info(gc, NULL, "ICQ Page", dialog_msg, purple_request_cpar_from_connection(gc));
 				g_free(dialog_msg);
 			}
 		} break;
@@ -1791,7 +1789,7 @@
 		case 0x0e: { /* Someone has emailed you at your_uin@pager.icq.com */
 			if (i >= 6) {
 				gchar *dialog_msg = g_strdup_printf(_("You have received an ICQ email from %s [%s]\n\nMessage is:\n%s"), msg2[0], msg2[3], msg2[5]);
-				purple_notify_info(gc, NULL, "ICQ Email", dialog_msg);
+				purple_notify_info(gc, NULL, "ICQ Email", dialog_msg, purple_request_cpar_from_connection(gc));
 				g_free(dialog_msg);
 			}
 		} break;
@@ -2039,8 +2037,10 @@
 			break;
 	}
 
-	if (!purple_conversation_present_error(userinfo->bn, account, buf))
-		purple_notify_error(od->gc, NULL, buf, NULL);
+	if (!purple_conversation_present_error(userinfo->bn, account, buf)) {
+		purple_notify_error(od->gc, NULL, buf, NULL,
+			purple_request_cpar_from_connection(od->gc));
+	}
 	g_free(buf);
 
 	return 1;
@@ -2237,9 +2237,11 @@
 
 	purple_debug_misc("oscar",
 			   "MOTD: %s (%hu)\n", msg ? msg : "Unknown", id);
-	if (id < 4)
+	if (id < 4) {
 		purple_notify_warning(od->gc, NULL,
-							_("Your AIM connection may be lost."), NULL);
+			_("Your AIM connection may be lost."), NULL,
+			purple_request_cpar_from_connection(od->gc));
+	}
 
 	return 1;
 }
@@ -2647,7 +2649,8 @@
 	username = purple_account_get_username(purple_connection_get_account(gc));
 	if (oscar_util_name_compare(username, new_display_name)) {
 		purple_notify_error(gc, NULL, _("The new formatting is invalid."),
-						  _("Username formatting can change only capitalization and whitespace."));
+						  _("Username formatting can change only capitalization and whitespace."),
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -2813,9 +2816,9 @@
 	if (results == NULL) {
 		purple_debug_error("oscar", "purple_parse_searchreply: "
 						 "Unable to display the search results.\n");
-		purple_notify_error(gc, NULL,
-						  _("Unable to display the search results."),
-						  NULL);
+		purple_notify_error(gc, NULL, _("Unable to display the search "
+			"results."), NULL,
+			purple_request_cpar_from_connection(gc));
 		return 1;
 	}
 
@@ -2852,7 +2855,8 @@
 	va_end(ap);
 
 	buf = g_strdup_printf(_("No results found for email address %s"), email);
-	purple_notify_error(od->gc, NULL, buf, NULL);
+	purple_notify_error(od->gc, NULL, buf, NULL,
+		purple_request_cpar_from_connection(od->gc));
 	g_free(buf);
 
 	return 1;
@@ -2874,7 +2878,8 @@
 	if (!status) {
 		g_snprintf(msg, sizeof(msg), _("You should receive an email asking to confirm %s."),
 				purple_account_get_username(purple_connection_get_account(gc)));
-		purple_notify_info(gc, NULL, _("Account Confirmation Requested"), msg);
+		purple_notify_info(gc, NULL, _("Account Confirmation Requested"),
+			msg, purple_request_cpar_from_connection(gc));
 	}
 
 	return 1;
@@ -2920,8 +2925,8 @@
 			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unable to change email address because the given address is invalid."), err);
 		else
 			dialog_msg = g_strdup_printf(_("Error 0x%04x: Unknown error."), err);
-		purple_notify_error(gc, NULL,
-				_("Error Changing Account Info"), dialog_msg);
+		purple_notify_error(gc, NULL, _("Error Changing Account Info"),
+			dialog_msg, purple_request_cpar_from_connection(gc));
 		g_free(dialog_msg);
 		return 1;
 	}
@@ -2929,7 +2934,8 @@
 	if (email != NULL) {
 		char *dialog_msg = g_strdup_printf(_("The email address for %s is %s"),
 						   purple_account_get_username(purple_connection_get_account(gc)), email);
-		purple_notify_info(gc, NULL, _("Account Info"), dialog_msg);
+		purple_notify_info(gc, NULL, _("Account Info"), dialog_msg,
+			purple_request_cpar_from_connection(gc));
 		g_free(dialog_msg);
 	}
 
@@ -3352,7 +3358,8 @@
 							_("You have probably requested to set your "
 							  "profile before the login procedure completed.  "
 							  "Your profile remains unset; try setting it "
-							  "again when you are fully connected."));
+							  "again when you are fully connected."),
+			purple_request_cpar_from_connection(gc));
 	}
 	else if (rawinfo != NULL)
 	{
@@ -3368,7 +3375,8 @@
 									 "The maximum profile length of %d bytes "
 									 "has been exceeded.  It has been truncated for you.",
 									 od->rights.maxsiglen), od->rights.maxsiglen);
-			purple_notify_warning(gc, NULL, _("Profile too long."), errstr);
+			purple_notify_warning(gc, NULL, _("Profile too long."),
+				errstr, purple_request_cpar_from_connection(gc));
 			g_free(errstr);
 		}
 	}
@@ -3402,7 +3410,9 @@
 										 "The maximum away message length of %d bytes "
 										 "has been exceeded.  It has been truncated for you.",
 										 od->rights.maxawaymsglen), od->rights.maxawaymsglen);
-				purple_notify_warning(gc, NULL, _("Away message too long."), errstr);
+				purple_notify_warning(gc, NULL,
+					_("Away message too long."), errstr,
+					purple_request_cpar_from_connection(gc));
 				g_free(errstr);
 			}
 		}
@@ -3504,7 +3514,7 @@
 		gchar *buf;
 		buf = g_strdup_printf(_("Unable to add the buddy %s because the username is invalid.  Usernames must be a valid email address, or start with a letter and contain only letters, numbers and spaces, or contain only numbers."), bname);
 		if (!purple_conversation_present_error(bname, account, buf))
-			purple_notify_error(gc, NULL, _("Unable to Add"), buf);
+			purple_notify_error(gc, NULL, _("Unable to Add"), buf, purple_request_cpar_from_connection(gc));
 		g_free(buf);
 
 		/* Remove from local list */
@@ -3641,7 +3651,8 @@
 					_("Unable to Retrieve Buddy List"),
 					_("The AIM servers were temporarily unable to send "
 					"your buddy list.  Your buddy list is not lost, and "
-					"will probably become available in a few minutes."));
+					"will probably become available in a few minutes."),
+					purple_request_cpar_from_connection(gc));
 		od->getblisttimer = purple_timeout_add_seconds(30, purple_ssi_rerequestdata, od);
 		return 1;
 	}
@@ -3970,7 +3981,7 @@
 				gchar *buf;
 				buf = g_strdup_printf(_("Unable to add the buddy %s because you have too many buddies in your buddy list.  Please remove one and try again."), (retval->name ? retval->name : _("(no name)")));
 				if ((retval->name != NULL) && !purple_conversation_present_error(retval->name, purple_connection_get_account(gc), buf))
-					purple_notify_error(gc, NULL, _("Unable to Add"), buf);
+					purple_notify_error(gc, NULL, _("Unable to Add"), buf, purple_request_cpar_from_connection(gc));
 				g_free(buf);
 			} break;
 
@@ -3985,7 +3996,7 @@
 				buf = g_strdup_printf(_("Unable to add the buddy %s for an unknown reason."),
 						(retval->name ? retval->name : _("(no name)")));
 				if ((retval->name != NULL) && !purple_conversation_present_error(retval->name, purple_connection_get_account(gc), buf))
-					purple_notify_error(gc, NULL, _("Unable to Add"), buf);
+					purple_notify_error(gc, NULL, _("Unable to Add"), buf, purple_request_cpar_from_connection(gc));
 				g_free(buf);
 			} break;
 		}
@@ -4171,11 +4182,13 @@
 	if (reply) {
 		/* Granted */
 		dialog_msg = g_strdup_printf(_("The user %s has granted your request to add them to your buddy list."), nombre);
-		purple_notify_info(gc, NULL, _("Authorization Granted"), dialog_msg);
+		purple_notify_info(gc, NULL, _("Authorization Granted"),
+			dialog_msg, purple_request_cpar_from_connection(gc));
 	} else {
 		/* Denied */
 		dialog_msg = g_strdup_printf(_("The user %s has denied your request to add them to your buddy list for the following reason:\n%s"), nombre, msg ? msg : _("No reason given."));
-		purple_notify_info(gc, NULL, _("Authorization Denied"), dialog_msg);
+		purple_notify_info(gc, NULL, _("Authorization Denied"),
+			dialog_msg, purple_request_cpar_from_connection(gc));
 	}
 	g_free(dialog_msg);
 	g_free(nombre);
--- a/libpurple/protocols/sametime/sametime.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/sametime/sametime.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1726,7 +1726,8 @@
 
   purple_notify_message(gc, PURPLE_NOTIFY_MSG_INFO,
 		      _("Sametime Administrator Announcement"),
-		      prim, text, NULL, NULL);
+		      prim, text, NULL, NULL,
+		      purple_request_cpar_from_connection(gc));
 
   g_free(prim);
 }
@@ -2031,7 +2032,8 @@
 
   serv_got_chat_left(gc, CONF_TO_ID(conf));
 
-  purple_notify_error(gc, _("Conference Closed"), NULL, msg);
+  purple_notify_error(gc, _("Conference Closed"), NULL, msg,
+	purple_request_cpar_from_connection(gc));
   g_free(msg);
 }
 
@@ -2456,6 +2458,7 @@
 /* Does what it takes to get an error displayed for a conversation */
 static void convo_error(struct mwConversation *conv, guint32 err) {
   PurpleIMConversation *im;
+  PurpleConnection *pc;
   char *tmp, *text;
   struct mwIdBlock *idb;
 
@@ -2471,9 +2474,9 @@
     g_free(text);
     text = g_strdup_printf(_("Unable to send message to %s:"),
 			   (idb->user)? idb->user: "(unknown)");
-    purple_notify_error(purple_account_get_connection(
-    		purple_conversation_get_account(PURPLE_CONVERSATION(im))),
-		      NULL, text, tmp);
+	pc = purple_account_get_connection(purple_conversation_get_account(
+			   PURPLE_CONVERSATION(im)));
+	purple_notify_error(pc, NULL, text, tmp, purple_request_cpar_from_connection(pc));
   }
 
   g_free(tmp);
@@ -3029,7 +3032,8 @@
 
   serv_got_chat_left(gc, PLACE_TO_ID(place));
 
-  purple_notify_error(gc, _("Place Closed"), NULL, msg);
+  purple_notify_error(gc, _("Place Closed"), NULL, msg,
+	purple_request_cpar_from_connection(gc));
   g_free(msg);
 }
 
@@ -5258,7 +5262,8 @@
     msgB = _("A group named '%s' already exists in your buddy list.");
     msg = g_strdup_printf(msgB, name);
 
-    purple_notify_error(gc, _("Unable to add group"), msgA, msg);
+    purple_notify_error(gc, _("Unable to add group"), msgA, msg,
+	purple_request_cpar_from_connection(gc));
 
     g_free(msg);
     return;
@@ -5388,7 +5393,8 @@
 	    " groups in your Sametime community.");
     msg = g_strdup_printf(msgB, res->name);
 
-    purple_notify_error(gc, _("Unable to add group"), msgA, msg);
+    purple_notify_error(gc, _("Unable to add group"), msgA, msg,
+	purple_request_cpar_from_connection(gc));
 
     g_free(msg);
   }
@@ -5513,7 +5519,8 @@
 	     " Sametime community.");
     msg = g_strdup_printf(msgB, (res && res->name) ? NSTR(res->name) : "");
 
-    purple_notify_error(gc, _("No Matches"), msgA, msg);
+    purple_notify_error(gc, _("No Matches"), msgA, msg,
+	purple_request_cpar_from_connection(gc));
 
     g_free(msg);
   }
--- a/libpurple/protocols/silc/buddy.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/buddy.c	Sat Sep 21 17:01:08 2013 +0530
@@ -52,7 +52,8 @@
 		g_snprintf(tmp, sizeof(tmp),
 			   _("User %s is not present in the network"), r->nick);
 		purple_notify_error(gc, _("Key Agreement"),
-				  _("Cannot perform the key agreement"), tmp);
+			_("Cannot perform the key agreement"), tmp,
+			purple_request_cpar_from_connection(gc));
 		g_free(r->nick);
 		silc_free(r);
 		return;
@@ -109,32 +110,38 @@
 
 	case SILC_KEY_AGREEMENT_ERROR:
 		purple_notify_error(gc, _("Key Agreement"),
-				    _("Error occurred during key agreement"), NULL);
+			_("Error occurred during key agreement"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_KEY_AGREEMENT_FAILURE:
-		purple_notify_error(gc, _("Key Agreement"), _("Key Agreement failed"), NULL);
+		purple_notify_error(gc, _("Key Agreement"),
+			_("Key Agreement failed"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_KEY_AGREEMENT_TIMEOUT:
 		purple_notify_error(gc, _("Key Agreement"),
-				    _("Timeout during key agreement"), NULL);
+			_("Timeout during key agreement"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_KEY_AGREEMENT_ABORTED:
 		purple_notify_error(gc, _("Key Agreement"),
-				    _("Key agreement was aborted"), NULL);
+			_("Key agreement was aborted"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_KEY_AGREEMENT_ALREADY_STARTED:
-		purple_notify_error(gc, _("Key Agreement"),
-				    _("Key agreement is already started"), NULL);
+		purple_notify_error(gc, _("Key Agreement"), _("Key agreement is"
+			" already started"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_KEY_AGREEMENT_SELF_DENIED:
-		purple_notify_error(gc, _("Key Agreement"),
-				    _("Key agreement cannot be started with yourself"),
-				    NULL);
+		purple_notify_error(gc, _("Key Agreement"), _("Key agreement "
+			"cannot be started with yourself"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	default:
@@ -254,7 +261,7 @@
 	if (!client_entry) {
 		purple_notify_error(a->client->application, _("Key Agreement"),
 				    _("The remote user is not present in the network any more"),
-				    NULL);
+				    NULL, NULL);
 		goto out;
 	}
 
@@ -385,7 +392,7 @@
 	if (!client_entry) {
 		purple_notify_error(p->client->application, _("IM With Password"),
 				    _("The remote user is not present in the network any more"),
-				    NULL);
+				    NULL, NULL);
 		silc_free(p);
 		return;
 	}
@@ -414,7 +421,7 @@
 			   _("User %s is not present in the network"),
 			   (const char *)context);
 		purple_notify_error(client->application, _("IM With Password"),
-				  _("Cannot set IM key"), tmp);
+				  _("Cannot set IM key"), tmp, NULL);
 		g_free(context);
 		return;
 	}
@@ -499,7 +506,7 @@
 	if (status != SILC_STATUS_OK) {
 		purple_notify_error(g->client->application, _("Get Public Key"),
 				  _("The remote user is not present in the network any more"),
-				  NULL);
+				  NULL, NULL);
 		silc_free(g);
 		return FALSE;
 	}
@@ -510,7 +517,7 @@
 	if (!client_entry) {
 		purple_notify_error(g->client->application, _("Get Public Key"),
 				  _("The remote user is not present in the network any more"),
-				  NULL);
+				  NULL, NULL);
 		silc_free(g);
 		return FALSE;
 	}
@@ -542,7 +549,7 @@
 			   _("User %s is not present in the network"),
 			   (const char *)context);
 		purple_notify_error(client->application, _("Get Public Key"),
-				    _("Cannot fetch the public key"), tmp);
+				    _("Cannot fetch the public key"), tmp, NULL);
 		g_free(context);
 		return;
 	}
@@ -622,9 +629,9 @@
 
 	pkfile = purple_blist_node_get_string(node, "public-key");
 	if (!silc_pkcs_load_public_key(pkfile, &public_key)) {
-		purple_notify_error(gc,
-				  _("Show Public Key"),
-				  _("Could not load public key"), NULL);
+		purple_notify_error(gc, _("Show Public Key"),
+			_("Could not load public key"), NULL,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -704,7 +711,8 @@
 			g_snprintf(tmp, sizeof(tmp),
 				   _("User %s is not present in the network"), purple_buddy_get_name(b));
 			purple_notify_error(gc, _("User Information"),
-					  _("Cannot get user information"), tmp);
+				_("Cannot get user information"), tmp,
+				purple_request_cpar_from_connection(gc));
 			return;
 		}
 
@@ -730,7 +738,8 @@
 	purple_notify_error(r->client->application, _("Add Buddy"), tmp,
 			    _("You cannot receive buddy notifications until you "
 			      "import his/her public key.  You can use the Get Public Key "
-			      "command to get the public key."));
+			      "command to get the public key."),
+		purple_request_cpar_from_account(purple_buddy_get_account(r->b)));
 	purple_protocol_got_user_status(purple_buddy_get_account(r->b), purple_buddy_get_name(r->b), SILCPURPLE_STATUS_ID_OFFLINE, NULL);
 }
 
@@ -1031,8 +1040,10 @@
 	/* Load the public key */
 	if (!silc_pkcs_load_public_key(name, &r->public_key)) {
 		silcpurple_add_buddy_ask_pk_cb(r, 0);
-		purple_notify_error(r->client->application,
-				  _("Add Buddy"), _("Could not load public key"), NULL);
+		purple_notify_error(r->client->application, _("Add Buddy"),
+			_("Could not load public key"), NULL,
+			purple_request_cpar_from_account(
+				purple_buddy_get_account(r->b)));
 		return;
 	}
 
--- a/libpurple/protocols/silc/chat.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/chat.c	Sat Sep 21 17:01:08 2013 +0530
@@ -80,7 +80,8 @@
 		g_snprintf(tmp, sizeof(tmp),
 			   _("Channel %s does not exist in the network"), chname);
 		purple_notify_error(gc, _("Channel Information"),
-				  _("Cannot get channel information"), tmp);
+			_("Cannot get channel information"), tmp,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -238,7 +239,7 @@
 		silc_free(sgc);
 		purple_notify_error(client->application,
 				    _("Add Channel Public Key"),
-				    _("Could not load public key"), NULL);
+				    _("Could not load public key"), NULL, NULL);
 		return;
 	}
 
@@ -1053,7 +1054,8 @@
 				   _("You have to join the %s channel before you are "
 				     "able to join the private group"), parentch);
 			purple_notify_error(gc, _("Join Private Group"),
-					  _("Cannot join private group"), tmp);
+				_("Cannot join private group"), tmp,
+				purple_request_cpar_from_connection(gc));
 			return;
 		}
 
@@ -1248,9 +1250,11 @@
 		}
 		flags |= SILC_MESSAGE_FLAG_ACTION;
 	} else if (strlen(msg) > 1 && msg[0] == '/') {
-		if (!silc_client_command_call(client, conn, msg + 1))
-			purple_notify_error(gc, _("Call Command"), _("Cannot call command"),
-					    _("Unknown command"));
+		if (!silc_client_command_call(client, conn, msg + 1)) {
+			purple_notify_error(gc, _("Call Command"),
+				_("Cannot call command"), _("Unknown command"),
+				purple_request_cpar_from_connection(gc));
+		}
 		g_free(tmp);
 		return 0;
 	}
--- a/libpurple/protocols/silc/ft.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/ft.c	Sat Sep 21 17:01:08 2013 +0530
@@ -83,9 +83,9 @@
 	}
 
 	if (status == SILC_CLIENT_FILE_MONITOR_DISCONNECT) {
-		purple_notify_error(gc, _("Secure File Transfer"),
-				    _("Error during file transfer"),
-				    _("Remote disconnected"));
+		purple_notify_error(gc, _("Secure File Transfer"), _("Error "
+			"during file transfer"), _("Remote disconnected"),
+			purple_request_cpar_from_connection(gc));
 		purple_xfer_set_status(xfer->xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
 		purple_xfer_update_progress(xfer->xfer);
 		silc_client_file_close(client, conn, session_id);
@@ -100,27 +100,33 @@
 			g_snprintf(tmp, sizeof(tmp), "No such file %s",
 				   filepath ? filepath : "[N/A]");
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"), tmp);
+				_("Error during file transfer"), tmp,
+				purple_request_cpar_from_connection(gc));
 		} else if (error == SILC_CLIENT_FILE_PERMISSION_DENIED) {
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"),
-					  _("Permission denied"));
+				_("Error during file transfer"),
+				_("Permission denied"),
+				purple_request_cpar_from_connection(gc));
 		} else if (error == SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED) {
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"),
-					  _("Key agreement failed"));
+				_("Error during file transfer"),
+				_("Key agreement failed"),
+				purple_request_cpar_from_connection(gc));
 		} else if (error == SILC_CLIENT_FILE_TIMEOUT) {
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"),
-					  _("Connection timed out"));
+				_("Error during file transfer"),
+				_("Connection timed out"),
+				purple_request_cpar_from_connection(gc));
 		} else if (error == SILC_CLIENT_FILE_CONNECT_FAILED) {
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"),
-					  _("Creating connection failed"));
+				_("Error during file transfer"),
+				_("Creating connection failed"),
+				purple_request_cpar_from_connection(gc));
 		} else if (error == SILC_CLIENT_FILE_UNKNOWN_SESSION) {
 			purple_notify_error(gc, _("Secure File Transfer"),
-					  _("Error during file transfer"),
-					  _("File transfer session does not exist"));
+				_("Error during file transfer"),
+				_("File transfer session does not exist"),
+				purple_request_cpar_from_connection(gc));
 		}
 		purple_xfer_set_status(xfer->xfer, PURPLE_XFER_STATUS_CANCEL_REMOTE);
 		purple_xfer_update_progress(xfer->xfer);
@@ -268,23 +274,26 @@
 
 	case SILC_CLIENT_FILE_UNKNOWN_SESSION:
 		purple_notify_error(gc, _("Secure File Transfer"),
-				  _("No file transfer session active"), NULL);
+			_("No file transfer session active"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_CLIENT_FILE_ALREADY_STARTED:
 		purple_notify_error(gc, _("Secure File Transfer"),
-				  _("File transfer already started"), NULL);
+			_("File transfer already started"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 
 	case SILC_CLIENT_FILE_KEY_AGREEMENT_FAILED:
 		purple_notify_error(gc, _("Secure File Transfer"),
-				  _("Could not perform key agreement for file transfer"),
-				  NULL);
+			_("Could not perform key agreement for file transfer"),
+			NULL, purple_request_cpar_from_connection(gc));
 		break;
 
 	default:
 		purple_notify_error(gc, _("Secure File Transfer"),
-				  _("Could not start the file transfer"), NULL);
+			_("Could not start the file transfer"), NULL,
+			purple_request_cpar_from_connection(gc));
 		break;
 	}
 
@@ -420,7 +429,8 @@
 			   _("User %s is not present in the network"),
 			   (const char *)context);
 		purple_notify_error(gc, _("Secure File Transfer"),
-				  _("Cannot send file"), tmp);
+			_("Cannot send file"), tmp,
+			purple_request_cpar_from_connection(gc));
 		g_free(context);
 		return;
 	}
--- a/libpurple/protocols/silc/ops.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/ops.c	Sat Sep 21 17:01:08 2013 +0530
@@ -74,7 +74,7 @@
 	if (gc != NULL)
 		purple_connection_error(gc, reason, tmp);
 	else
-		purple_notify_error(NULL, _("Error"), _("Error occurred"), tmp);
+		purple_notify_error(NULL, _("Error"), _("Error occurred"), tmp, NULL);
 }
 
 /* Processes incoming MIME message.  Can be private message or channel
@@ -831,7 +831,7 @@
 			SilcStatus error = va_arg(va, int);
 			purple_notify_error(gc, "Error Notify",
 					    silc_get_status_message(error),
-					    NULL);
+					    NULL, purple_request_cpar_from_connection(gc));
 		}
 		break;
 
@@ -1104,7 +1104,8 @@
 
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Join Chat"), _("Cannot join channel"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1180,7 +1181,8 @@
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("User Information"),
 						_("Cannot get user information"),
-						silc_get_status_message(error));
+						silc_get_status_message(error),
+						purple_request_cpar_from_connection(gc));
 				break;
 			}
 
@@ -1328,7 +1330,8 @@
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("User Information"),
 						  _("Cannot get user information"),
-						  silc_get_status_message(error));
+						  silc_get_status_message(error),
+						  purple_request_cpar_from_connection(gc));
 				break;
 			}
 
@@ -1387,7 +1390,8 @@
 
 			if (status != SILC_STATUS_OK) {
 			  purple_notify_error(gc, _("Detach From Server"), _("Cannot detach"),
-					      silc_get_status_message(error));
+					      silc_get_status_message(error),
+					      purple_request_cpar_from_connection(gc));
 			  return;
 			}
 
@@ -1407,7 +1411,8 @@
 
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Topic"), _("Cannot set topic"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1436,7 +1441,8 @@
 
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Nick"), _("Failed to change nickname"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1477,7 +1483,8 @@
 
 			if (error != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Error"), _("Error retrieving room list"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				purple_roomlist_set_in_progress(sg->roomlist, FALSE);
 				g_object_unref(sg->roomlist);
 				sg->roomlist = NULL;
@@ -1488,7 +1495,8 @@
 			name = va_arg(ap, char *);
 			if (!name) {
 				purple_notify_error(gc, _("Roomlist"), _("Cannot get room list"),
-						    _("Network is empty"));
+						    _("Network is empty"),
+						    purple_request_cpar_from_connection(gc));
 				purple_roomlist_set_in_progress(sg->roomlist, FALSE);
 				g_object_unref(sg->roomlist);
 				sg->roomlist = NULL;
@@ -1521,7 +1529,8 @@
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Get Public Key"),
 						    _("Cannot fetch the public key"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1532,7 +1541,8 @@
 			if (!public_key)
 				purple_notify_error(gc, _("Get Public Key"),
 						    _("Cannot fetch the public key"),
-						    _("No public key was received"));
+						    _("No public key was received"),
+						    purple_request_cpar_from_connection(gc));
 		}
 		break;
 
@@ -1546,7 +1556,8 @@
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Server Information"),
 						    _("Cannot get server information"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1557,7 +1568,8 @@
 			if (server_name && server_info) {
 				g_snprintf(tmp, sizeof(tmp), "Server: %s\n%s",
 					   server_name, server_info);
-				purple_notify_info(gc, NULL, _("Server Information"), tmp);
+				purple_notify_info(gc, NULL, _("Server Information"), tmp,
+					purple_request_cpar_from_connection(gc));
 			}
 		}
 		break;
@@ -1570,7 +1582,8 @@
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Server Statistics"),
 						    _("Cannot get server statistics"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
@@ -1608,7 +1621,8 @@
 					      (int)stats->router_ops);
 
 			purple_notify_info(gc, NULL,
-					   _("Network Statistics"), msg);
+					   _("Network Statistics"), msg,
+					   purple_request_cpar_from_connection(gc));
 			g_free(msg);
 		}
 		break;
@@ -1617,12 +1631,13 @@
 		{
 			if (status != SILC_STATUS_OK) {
 				purple_notify_error(gc, _("Ping"), _("Ping failed"),
-						    silc_get_status_message(error));
+						    silc_get_status_message(error),
+						    purple_request_cpar_from_connection(gc));
 				return;
 			}
 
 			purple_notify_info(gc, _("Ping"), _("Ping reply received from server"),
-					   NULL);
+					   NULL, purple_request_cpar_from_connection(gc));
 		}
 		break;
 
@@ -1630,7 +1645,8 @@
 		if (status != SILC_STATUS_OK) {
 			purple_notify_error(gc, _("Kill User"),
 					    _("Could not kill user"),
-					    silc_get_status_message(error));
+					    silc_get_status_message(error),
+					    purple_request_cpar_from_connection(gc));
 			return;
 		}
 		break;
@@ -1669,7 +1685,8 @@
 	case SILC_COMMAND_WATCH:
 		if (status != SILC_STATUS_OK) {
 			purple_notify_error(gc, _("WATCH"), _("Cannot watch user"),
-					    silc_get_status_message(error));
+				silc_get_status_message(error),
+				purple_request_cpar_from_connection(gc));
 			return;
 		}
 		break;
--- a/libpurple/protocols/silc/pk.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/pk.c	Sat Sep 21 17:01:08 2013 +0530
@@ -138,7 +138,8 @@
 
 	if (silc_pkcs_get_type(public_key) != SILC_PKCS_SILC) {
 		purple_notify_error(gc, _("Verify Public Key"),
-				    _("Unsupported public key type"), NULL);
+				    _("Unsupported public key type"), NULL,
+				    purple_request_cpar_from_connection(gc));
 		if (completion)
 			completion(FALSE, context);
 		return;
--- a/libpurple/protocols/silc/silc.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/silc/silc.c	Sat Sep 21 17:01:08 2013 +0530
@@ -475,7 +475,9 @@
 
 	if (!password || !*password)
 	{
-		purple_notify_error(gc, NULL, _("Password is required to sign on."), NULL);
+		purple_notify_error(gc, NULL,
+			_("Password is required to sign on."), NULL,
+			purple_request_cpar_from_connection(gc));
 		purple_connection_set_protocol_data(gc, NULL);
 		silc_free(sg);
 		return;
@@ -1102,9 +1104,10 @@
 		return;
 
 	if (!sg->motd) {
-		purple_notify_error(
-		     gc, _("Message of the Day"), _("No Message of the Day available"),
-		     _("There is no Message of the Day associated with this connection"));
+		purple_notify_error(gc, _("Message of the Day"), _("No Message "
+			"of the Day available"), _("There is no Message of the "
+			"Day associated with this connection"),
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -1154,8 +1157,9 @@
 		pass2 = "";
 
 	if (strcmp(pass1, pass2)) {
-		purple_notify_error(
-		     gc, _("Create New SILC Key Pair"), _("Passphrases do not match"), NULL);
+		purple_notify_error(gc, _("Create New SILC Key Pair"),
+			_("Passphrases do not match"), NULL,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -1200,8 +1204,9 @@
 	if (!silc_create_key_pair(SILCPURPLE_DEF_PKCS, keylen, pkfile, prfile,
 				  identifier, pass1, &public_key, NULL,
 				  FALSE)) {
-		purple_notify_error(
-		     gc, _("Create New SILC Key Pair"), _("Key Pair Generation failed"), NULL);
+		purple_notify_error(gc, _("Create New SILC Key Pair"),
+			_("Key Pair Generation failed"), NULL,
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -1468,7 +1473,8 @@
 		if (!silc_client_command_call(client, conn, msg + 1))
 			purple_notify_error(gc, _("Call Command"),
 					    _("Cannot call command"),
-					    _("Unknown command"));
+					    _("Unknown command"),
+					    purple_request_cpar_from_connection(gc));
 		g_free(tmp);
 		return 0;
 	}
--- a/libpurple/protocols/yahoo/yahoo_filexfer.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/yahoo/yahoo_filexfer.c	Sat Sep 21 17:01:08 2013 +0530
@@ -896,7 +896,8 @@
 
 	if (!purple_http_response_is_successful(response)) {
 		purple_notify_error(yd->gc, NULL, _("File Transfer Failed"),
-			_("Unable to get file header."));
+			_("Unable to get file header."),
+			purple_request_cpar_from_connection(yd->gc));
 		purple_xfer_cancel_remote(xfer);
 		return;
 	}
@@ -974,7 +975,8 @@
 		if (!xfer_data->is_relay) {
 			purple_debug_error("yahoo", "Non-relay FT aren't tested yet.\n");
 			purple_notify_error(gc, NULL, _("File Transfer Failed"),
-				_("Unsupported method"));
+				_("Unsupported method"),
+				purple_request_cpar_from_connection(gc));
 			purple_xfer_cancel_remote(xfer);
 		}
 
--- a/libpurple/protocols/yahoo/yahoochat.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/yahoo/yahoochat.c	Sat Sep 21 17:01:08 2013 +0530
@@ -477,17 +477,26 @@
 		gchar const *failed_to_join = _("Failed to join chat");
 		switch (atoi(pair->value)) {
 			case 0xFFFFFFFA: /* -6 */
-				purple_notify_error(gc, NULL, failed_to_join, _("Unknown room"));
+				purple_notify_error(gc, NULL, failed_to_join,
+					_("Unknown room"),
+					purple_request_cpar_from_connection(gc));
 				break;
 			case 0xFFFFFFF1: /* -15 */
-				purple_notify_error(gc, NULL, failed_to_join, _("Maybe the room is full"));
+				purple_notify_error(gc, NULL, failed_to_join,
+					_("Maybe the room is full"),
+					purple_request_cpar_from_connection(gc));
 				break;
 			case 0xFFFFFFDD: /* -35 */
-				purple_notify_error(gc, NULL, failed_to_join, _("Not available"));
+				purple_notify_error(gc, NULL, failed_to_join,
+					_("Not available"),
+					purple_request_cpar_from_connection(gc));
 				break;
 			default:
 				purple_notify_error(gc, NULL, failed_to_join,
-						_("Unknown error. You may need to logout and wait five minutes before being able to rejoin a chatroom"));
+					_("Unknown error. You may need to "
+					"logout and wait five minutes before "
+					"being able to rejoin a chatroom"),
+					purple_request_cpar_from_connection(gc));
 		}
 		return;
 	}
@@ -751,9 +760,11 @@
 
 void yahoo_process_chat_goto(PurpleConnection *gc, struct yahoo_packet *pkt)
 {
-	if (pkt->status == -1)
+	if (pkt->status == -1) {
 		purple_notify_error(gc, NULL, _("Failed to join buddy in chat"),
-						_("Maybe they're not in a chat?"));
+			_("Maybe they're not in a chat?"),
+			purple_request_cpar_from_connection(gc));
+	}
 }
 
 /*
@@ -1386,7 +1397,8 @@
 
 	if (!purple_http_response_is_successful(response)) {
 		purple_notify_error(gc, NULL, _("Unable to connect"),
-			_("Fetching the room list failed."));
+			_("Fetching the room list failed."),
+			purple_request_cpar_from_connection(gc));
 		yahoo_roomlist_cleanup(yrl->list, yrl);
 		return;
 	}
--- a/libpurple/protocols/yahoo/ycht.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/yahoo/ycht.c	Sat Sep 21 17:01:08 2013 +0530
@@ -457,7 +457,9 @@
 static void ycht_connection_error(YchtConn *ycht, const gchar *error)
 {
 
-	purple_notify_info(ycht->gc, NULL, _("Connection problem with the YCHT server"), error);
+	purple_notify_info(ycht->gc, NULL,
+		_("Connection problem with the YCHT server"), error,
+		purple_request_cpar_from_connection(ycht->gc));
 	ycht_connection_close(ycht);
 }
 
--- a/libpurple/protocols/yahoo/ymsg.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/yahoo/ymsg.c	Sat Sep 21 17:01:08 2013 +0530
@@ -366,7 +366,8 @@
 		case 16: /* Custom error message */
 			{
 				char *tmp = yahoo_string_decode(gc, pair->value, TRUE);
-				purple_notify_error(gc, NULL, tmp, NULL);
+				purple_notify_error(gc, NULL, tmp, NULL,
+					purple_request_cpar_from_connection(gc));
 				g_free(tmp);
 			}
 			break;
@@ -938,8 +939,11 @@
 				im = purple_im_conversation_new(account, sms->from);
 			purple_conversation_write(PURPLE_CONVERSATION(im), NULL, server_msg, PURPLE_MESSAGE_SYSTEM, time(NULL));
 		}
-		else
-			purple_notify_error(gc, NULL, _("Your SMS was not delivered"), NULL);
+		else {
+			purple_notify_error(gc, NULL,
+				_("Your SMS was not delivered"), NULL,
+				purple_request_cpar_from_connection(gc));
+		}
 
 		g_free(sms->from);
 		g_free(sms);
@@ -1080,7 +1084,8 @@
 		}
 	} else if (pkt->status == 2) {
 		purple_notify_error(gc, NULL,
-		                  _("Your Yahoo! message did not get sent."), NULL);
+			_("Your Yahoo! message did not get sent."), NULL,
+			purple_request_cpar_from_connection(gc));
 	}
 
 	for (l = list; l; l = l->next) {
@@ -1186,7 +1191,8 @@
 
 	prim = g_strdup_printf(_("Yahoo! system message for %s:"),
 	                       me?me:purple_connection_get_display_name(gc));
-	purple_notify_info(NULL, NULL, prim, msg);
+	purple_notify_info(NULL, NULL, prim, msg,
+		purple_request_cpar_from_connection(gc));
 	g_free(prim);
 }
 
@@ -1291,7 +1297,8 @@
 	} else
 		notify_msg = g_strdup_printf(_("%s has (retroactively) denied your request to add them to your list."), who);
 
-	purple_notify_info(gc, NULL, _("Add buddy rejected"), notify_msg);
+	purple_notify_info(gc, NULL, _("Add buddy rejected"), notify_msg,
+		purple_request_cpar_from_connection(gc));
 	g_free(notify_msg);
 
 	g_hash_table_remove(yd->friends, who);
@@ -2042,8 +2049,9 @@
 							"authentication method.  You will probably not be able "
 							"to successfully sign on to Yahoo.  Check %s for updates."),
 							((ui_info && g_hash_table_lookup(ui_info, "website")) ? (char *)g_hash_table_lookup(ui_info, "website") : PURPLE_WEBSITE));
-				purple_notify_error(gc, "", _("Failed Yahoo! Authentication"),
-							buf);
+				purple_notify_error(gc, "",
+					_("Failed Yahoo! Authentication"), buf,
+					purple_request_cpar_from_connection(gc));
 				g_free(buf);
 				yahoo_auth16_stage1(gc, seed); /* Can't hurt to try it anyway. */
 				break;
@@ -2326,7 +2334,8 @@
 	buf = g_strdup_printf(_("Unable to add buddy %s to group %s to the server list on account %s."),
 				who, decoded_group, purple_connection_get_display_name(gc));
 	if (!purple_conversation_present_error(who, purple_connection_get_account(gc), buf))
-		purple_notify_error(gc, NULL, _("Unable to add buddy to server list"), buf);
+		purple_notify_error(gc, NULL, _("Unable to add buddy to server list"), buf,
+			purple_request_cpar_from_connection(gc));
 	g_free(buf);
 	g_free(decoded_group);
 	g_free(who);
--- a/libpurple/protocols/zephyr/zephyr.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/protocols/zephyr/zephyr.c	Sat Sep 21 17:01:08 2013 +0530
@@ -756,10 +756,13 @@
 {
 	if (g_ascii_strcasecmp(notice.z_class, "message")) {
 		gchar* chat_failed = g_strdup_printf(_("Unable to send to chat %s,%s,%s"),notice.z_class,notice.z_class_inst,notice.z_recipient);
-		purple_notify_error(gc,"",chat_failed,NULL);
+		purple_notify_error(gc,"",chat_failed,NULL,
+			purple_request_cpar_from_connection(gc));
 		g_free(chat_failed);
 	} else {
-		purple_notify_error(gc, notice.z_recipient, _("User is offline"), NULL);
+		purple_notify_error(gc, notice.z_recipient,
+			_("User is offline"), NULL,
+			purple_request_cpar_from_connection(gc));
 	}
 }
 
@@ -1852,7 +1855,8 @@
 		/* XXX don't translate this yet. It could be written better */
 		/* XXX error messages could be handled with more detail */
 		purple_notify_error(purple_account_get_connection(account), NULL,
-				  "Unable to subscribe to messages", "Unable to subscribe to initial messages");
+			"Unable to subscribe to messages", "Unable to subscribe to initial messages",
+			purple_request_cpar_from_connection(gc));
 		return;
 	}
 
@@ -2397,7 +2401,7 @@
 static void zephyr_subscribe_failed(PurpleConnection *gc,char * z_class, char *z_instance, char * z_recipient, char* z_galaxy)
 {
 	gchar* subscribe_failed = g_strdup_printf(_("Attempt to subscribe to %s,%s,%s failed"), z_class, z_instance,z_recipient);
-	purple_notify_error(gc,"", subscribe_failed, NULL);
+	purple_notify_error(gc,"", subscribe_failed, NULL, purple_request_cpar_from_connection(gc));
 	g_free(subscribe_failed);
 }
 
@@ -2869,7 +2873,8 @@
 		g_string_free(subout, TRUE);
 	} else {
 		/* XXX fix */
-		purple_notify_error(gc,"","tzc doesn't support this action",NULL);
+		purple_notify_error(gc, "", "tzc doesn't support this action",
+			NULL, purple_request_cpar_from_connection(gc));
 	}
 }
 
--- a/libpurple/proxy.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/proxy.c	Sat Sep 21 17:01:08 2013 +0530
@@ -2345,7 +2345,10 @@
 		(purple_proxy_info_get_host(connect_data->gpi) == NULL ||
 		 purple_proxy_info_get_port(connect_data->gpi) <= 0)) {
 
-		purple_notify_error(NULL, NULL, _("Invalid proxy settings"), _("Either the host name or port number specified for your given proxy type is invalid."));
+		purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
+			_("Either the host name or port number specified for "
+			"your given proxy type is invalid."),
+			purple_request_cpar_from_account(account));
 		purple_proxy_connect_data_destroy(connect_data);
 		return NULL;
 	}
@@ -2413,7 +2416,10 @@
 		(purple_proxy_info_get_host(connect_data->gpi) == NULL ||
 		 purple_proxy_info_get_port(connect_data->gpi) <= 0)) {
 
-		purple_notify_error(NULL, NULL, _("Invalid proxy settings"), _("Either the host name or port number specified for your given proxy type is invalid."));
+		purple_notify_error(NULL, NULL, _("Invalid proxy settings"),
+			_("Either the host name or port number specified for "
+			"your given proxy type is invalid."),
+			purple_request_cpar_from_account(account));
 		purple_proxy_connect_data_destroy(connect_data);
 		return NULL;
 	}
--- a/libpurple/request.h	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/request.h	Sat Sep 21 17:01:08 2013 +0530
@@ -31,6 +31,7 @@
 #include <glib.h>
 
 #include "certificate.h"
+#include "conversation.h"
 
 /**
  * A request field.
--- a/libpurple/server.h	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/server.h	Sat Sep 21 17:01:08 2013 +0530
@@ -28,7 +28,7 @@
 
 #include "accounts.h"
 #include "conversations.h"
-#include "protocol.h"
+#include "protocols.h"
 
 G_BEGIN_DECLS
 
--- a/libpurple/xfer.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/xfer.c	Sat Sep 21 17:01:08 2013 +0530
@@ -348,6 +348,8 @@
 				purple_notify_message(
 					NULL, PURPLE_NOTIFY_MSG_ERROR, NULL,
 					_("Directory is not writable."), NULL,
+					purple_request_cpar_from_account(
+						purple_xfer_get_account(xfer)),
 					(PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer);
 			}
 
@@ -361,7 +363,9 @@
 	else if ((type == PURPLE_XFER_TYPE_SEND) && (st.st_size == 0)) {
 
 		purple_notify_error(NULL, NULL,
-						  _("Cannot send a file of 0 bytes."), NULL);
+			_("Cannot send a file of 0 bytes."), NULL,
+			purple_request_cpar_from_account(
+				purple_xfer_get_account(xfer)));
 
 		purple_xfer_cancel_local(xfer);
 	}
@@ -369,8 +373,9 @@
 		/*
 		 * XXX - Sending a directory should be valid for some protocols.
 		 */
-		purple_notify_error(NULL, NULL,
-						  _("Cannot send a directory."), NULL);
+		purple_notify_error(NULL, NULL, _("Cannot send a directory."),
+			NULL, purple_request_cpar_from_account(
+				purple_xfer_get_account(xfer)));
 
 		purple_xfer_cancel_local(xfer);
 	}
@@ -380,7 +385,9 @@
 		msg = g_strdup_printf(
 					_("%s is not a regular file. Cowardly refusing to overwrite it.\n"), utf8);
 		g_free(utf8);
-		purple_notify_error(NULL, NULL, msg, NULL);
+		purple_notify_error(NULL, NULL, msg, NULL,
+			purple_request_cpar_from_account(
+				purple_xfer_get_account(xfer)));
 		g_free(msg);
 		purple_xfer_request_denied(xfer);
 	}
@@ -398,6 +405,8 @@
 			purple_notify_message(
 				NULL, PURPLE_NOTIFY_MSG_ERROR, NULL,
 				_("File is not readable."), NULL,
+				purple_request_cpar_from_account(
+					purple_xfer_get_account(xfer)),
 				(PurpleNotifyCloseCallback)purple_xfer_choose_file, xfer);
 		}
 	}
@@ -1806,7 +1815,8 @@
 	else
 		title = g_strdup_printf(_("File transfer from %s failed."), who);
 
-	purple_notify_error(NULL, NULL, title, msg);
+	purple_notify_error(NULL, NULL, title, msg,
+		purple_request_cpar_from_account(account));
 
 	g_free(title);
 }
--- a/libpurple/xmlnode.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/libpurple/xmlnode.c	Sat Sep 21 17:01:08 2013 +0530
@@ -886,7 +886,7 @@
 		msg = g_strdup_printf(_("An error was encountered reading your "
 					"%s.  The file has not been loaded, and the old file "
 					"has been renamed to %s~."), description, filename_full);
-		purple_notify_error(NULL, NULL, title, msg);
+		purple_notify_error(NULL, NULL, title, msg, NULL);
 		g_free(title);
 		g_free(msg);
 	}
--- a/pidgin/gtkaccount.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkaccount.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1461,7 +1461,7 @@
 				dialog->protocol_id, username);
 
 			purple_notify_error(NULL, NULL, _("Unable to save new account"),
-				_("An account already exists with the specified criteria."));
+				_("An account already exists with the specified criteria."), NULL);
 
 			g_free(username);
 			return;
--- a/pidgin/gtkblist.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkblist.c	Sat Sep 21 17:01:08 2013 +0530
@@ -2538,7 +2538,7 @@
 			{
 				purple_notify_error(NULL, NULL,
 					_("You are not currently signed on with an account that "
-					  "can add that buddy."), NULL);
+					  "can add that buddy."), NULL, NULL);
 			}
 			else
 			{
@@ -7413,7 +7413,9 @@
 		protocol = purple_connection_get_protocol(gc);
 
 		if (!PURPLE_PROTOCOL_IMPLEMENTS(protocol, CHAT_IFACE, join)) {
-			purple_notify_error(gc, NULL, _("This protocol does not support chat rooms."), NULL);
+			purple_notify_error(gc, NULL, _("This protocol does not"
+				" support chat rooms."), NULL,
+				purple_request_cpar_from_account(account));
 			return;
 		}
 	} else {
@@ -7431,7 +7433,7 @@
 		if (account == NULL) {
 			purple_notify_error(NULL, NULL,
 							  _("You are not currently signed on with any "
-								"protocols that have the ability to chat."), NULL);
+								"protocols that have the ability to chat."), NULL, NULL);
 			return;
 		}
 	}
--- a/pidgin/gtkcertmgr.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkcertmgr.c	Sat Sep 21 17:01:08 2013 +0530
@@ -209,7 +209,7 @@
 		purple_notify_error(NULL,
 				    _("Certificate Import Error"),
 				    _("X.509 certificate import failed"),
-				    secondary);
+				    secondary, NULL);
 		g_free(secondary);
 	}
 }
@@ -244,7 +244,7 @@
 		purple_notify_error(NULL,
 				    _("Certificate Export Error"),
 				    _("X.509 certificate export failed"),
-				    secondary);
+				    secondary, NULL);
 		g_free(secondary);
 	}
 
--- a/pidgin/gtkconv.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkconv.c	Sat Sep 21 17:01:08 2013 +0530
@@ -858,9 +858,10 @@
 
 		if (strcmp(convprotocol, purple_account_get_protocol_id(purple_buddy_get_account(buddy))))
 		{
-			purple_notify_error(PIDGIN_CONVERSATION(PURPLE_CONVERSATION(info->chat)), NULL,
-							  _("That buddy is not on the same protocol as this "
-								"chat."), NULL);
+			purple_notify_error(PIDGIN_CONVERSATION(PURPLE_CONVERSATION(info->chat)),
+				NULL, _("That buddy is not on the same protocol"
+				" as this chat."), NULL,
+				purple_request_cpar_from_conversation(PURPLE_CONVERSATION(info->chat)));
 			success = FALSE;
 		}
 		else
@@ -882,13 +883,16 @@
 			{
 				purple_notify_error(PIDGIN_CONVERSATION(PURPLE_CONVERSATION(info->chat)), NULL,
 					_("You are not currently signed on with an account that "
-					  "can invite that buddy."), NULL);
+					  "can invite that buddy."), NULL, NULL);
 			}
 			else if (strcmp(convprotocol, purple_account_get_protocol_id(account)))
 			{
-				purple_notify_error(PIDGIN_CONVERSATION(PURPLE_CONVERSATION(info->chat)), NULL,
-								  _("That buddy is not on the same protocol as this "
-									"chat."), NULL);
+				purple_notify_error(
+					PIDGIN_CONVERSATION(PURPLE_CONVERSATION(info->chat)), NULL,
+					_("That buddy is not on the same "
+					"protocol as this chat."), NULL,
+					purple_request_cpar_from_account(
+						account));
 				success = FALSE;
 			}
 			else
@@ -1054,7 +1058,9 @@
 	gchar *text;
 
 	if ((fp = g_fopen(filename, "w+")) == NULL) {
-		purple_notify_error(PIDGIN_CONVERSATION(conv), NULL, _("Unable to open file."), NULL);
+		purple_notify_error(PIDGIN_CONVERSATION(conv), NULL,
+			_("Unable to open file."), NULL,
+			purple_request_cpar_from_conversation(conv));
 		return;
 	}
 
@@ -2792,7 +2798,7 @@
 	data = purple_buddy_icon_get_data(icon, &len);
 
 	if ((len <= 0) || (data == NULL) || !purple_util_write_data_to_file_absolute(filename, data, len)) {
-		purple_notify_error(gtkconv, NULL, _("Unable to save icon file to disk."), NULL);
+		purple_notify_error(gtkconv, NULL, _("Unable to save icon file to disk."), NULL, NULL);
 	}
 }
 
@@ -5586,7 +5592,7 @@
 			{
 				purple_notify_error(win, NULL,
 					_("You are not currently signed on with an account that "
-					  "can add that buddy."), NULL);
+					  "can add that buddy."), NULL, NULL);
 			} else {
 				/*
 				 * If a buddy is dragged to a chat window of the same protocol,
--- a/pidgin/gtkdebug.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkdebug.c	Sat Sep 21 17:01:08 2013 +0530
@@ -108,7 +108,7 @@
 	char *tmp;
 
 	if ((fp = g_fopen(filename, "w+")) == NULL) {
-		purple_notify_error(win, NULL, _("Unable to open file."), NULL);
+		purple_notify_error(win, NULL, _("Unable to open file."), NULL, NULL);
 		return;
 	}
 
--- a/pidgin/gtkimhtmltoolbar.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkimhtmltoolbar.c	Sat Sep 21 17:01:08 2013 +0530
@@ -519,7 +519,7 @@
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toolbar->image), FALSE);
 
 	if (!g_file_get_contents(filename, &filedata, &size, &error)) {
-		purple_notify_error(NULL, NULL, error->message, NULL);
+		purple_notify_error(NULL, NULL, error->message, NULL, NULL);
 
 		g_error_free(error);
 		g_free(filename);
@@ -533,7 +533,7 @@
 
 	if (id == 0) {
 		buf = g_strdup_printf(_("Failed to store image: %s\n"), filename);
-		purple_notify_error(NULL, NULL, buf, NULL);
+		purple_notify_error(NULL, NULL, buf, NULL, NULL);
 
 		g_free(buf);
 		g_free(filename);
--- a/pidgin/gtklog.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtklog.c	Sat Sep 21 17:01:08 2013 +0530
@@ -245,7 +245,7 @@
 	if (!purple_log_delete((PurpleLog *)data[2]))
 	{
 		purple_notify_error(NULL, NULL, _("Log Deletion Failed"),
-		                  _("Check permissions and try again."));
+		                  _("Check permissions and try again."), NULL);
 	}
 	else
 	{
@@ -567,7 +567,7 @@
 		if(icon != NULL)
 			gtk_widget_destroy(icon);
 
-		purple_notify_info(NULL, title, _("No logs were found"), log_preferences);
+		purple_notify_info(NULL, title, _("No logs were found"), log_preferences, NULL);
 		return NULL;
 	}
 
--- a/pidgin/gtkmedia.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkmedia.c	Sat Sep 21 17:01:08 2013 +0530
@@ -598,11 +598,13 @@
 	PurpleConversation *conv = purple_conversations_find_with_account(
 			gtkmedia->priv->screenname,
 			purple_media_get_account(gtkmedia->priv->media));
-	if (conv != NULL)
+	if (conv != NULL) {
 		purple_conversation_write(conv, NULL, error,
-				PURPLE_MESSAGE_ERROR, time(NULL));
-	else
-		purple_notify_error(NULL, NULL, _("Media error"), error);
+			PURPLE_MESSAGE_ERROR, time(NULL));
+	} else {
+		purple_notify_error(NULL, NULL, _("Media error"), error,
+			purple_request_cpar_from_conversation(conv));
+	}
 
 	gtk_statusbar_push(GTK_STATUSBAR(gtkmedia->priv->statusbar),
 			0, error);
--- a/pidgin/gtknotify.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtknotify.c	Sat Sep 21 17:01:08 2013 +0530
@@ -506,9 +506,39 @@
 	g_list_free(row);
 }
 
+/* copy-paste from gtkrequest.c */
+static void
+pidgin_widget_decorate_account(GtkWidget *cont, PurpleAccount *account)
+{
+	GtkWidget *image;
+	GdkPixbuf *pixbuf;
+
+	if (!account)
+		return;
+
+	pixbuf = pidgin_create_protocol_icon(account, PIDGIN_PROTOCOL_ICON_SMALL);
+	image = gtk_image_new_from_pixbuf(pixbuf);
+	g_object_unref(G_OBJECT(pixbuf));
+
+	gtk_widget_set_tooltip_text(image,
+		purple_account_get_username(account));
+
+	if (GTK_IS_DIALOG(cont)) {
+		gtk_box_pack_start(GTK_BOX(gtk_dialog_get_action_area(
+			GTK_DIALOG(cont))), image, FALSE, TRUE, 0);
+		gtk_box_reorder_child(GTK_BOX(gtk_dialog_get_action_area(
+			GTK_DIALOG(cont))), image, 0);
+	} else if (GTK_IS_HBOX(cont)) {
+		gtk_misc_set_alignment(GTK_MISC(image), 0, 0);
+		gtk_box_pack_end(GTK_BOX(cont), image, FALSE, TRUE, 0);
+	}
+	gtk_widget_show(image);
+}
+
 static void *
 pidgin_notify_message(PurpleNotifyMsgType type, const char *title,
-						const char *primary, const char *secondary)
+	const char *primary, const char *secondary,
+	PurpleRequestCommonParameters *cpar)
 {
 	GtkWidget *dialog;
 	GtkWidget *hbox;
@@ -566,6 +596,9 @@
 	if (img != NULL)
 		gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0);
 
+	pidgin_widget_decorate_account(hbox,
+		purple_request_cpar_get_account(cpar));
+
 	primary_esc = g_markup_escape_text(primary, -1);
 	secondary_esc = (secondary != NULL) ? g_markup_escape_text(secondary, -1) : NULL;
 	g_snprintf(label_text, sizeof(label_text),
@@ -1224,7 +1257,7 @@
 	{
 		tmp = g_strdup_printf(_("The browser command \"%s\" is invalid."),
 							  command ? command : "(none)");
-		purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
+		purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp, NULL);
 		g_free(tmp);
 
 	}
@@ -1236,7 +1269,7 @@
 		{
 			tmp = g_strdup_printf(_("Error launching \"%s\": %s"),
 										command, error->message);
-			purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
+			purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp, NULL);
 			g_free(tmp);
 			g_error_free(error);
 		}
@@ -1249,7 +1282,7 @@
 		{
 			tmp = g_strdup_printf(_("Error launching \"%s\": %s"),
 										command, error->message);
-			purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp);
+			purple_notify_error(NULL, NULL, _("Unable to open URL"), tmp, NULL);
 			g_free(tmp);
 			g_error_free(error);
 		}
@@ -1408,8 +1441,8 @@
 		if (web_command == NULL || *web_command == '\0')
 		{
 			purple_notify_error(NULL, NULL, _("Unable to open URL"),
-							  _("The 'Manual' browser command has been "
-								"chosen, but no command has been set."));
+				_("The 'Manual' browser command has been "
+				"chosen, but no command has been set."), NULL);
 			return NULL;
 		}
 
--- a/pidgin/gtkplugin.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkplugin.c	Sat Sep 21 17:01:08 2013 +0530
@@ -452,7 +452,7 @@
 			const char *reload = _("The plugin could not be unloaded now, but will be disabled at the next startup.");
 
 			char *tmp = g_strdup_printf("%s\n\n%s", reload, error->message);
-			purple_notify_warning(NULL, NULL, primary, tmp);
+			purple_notify_warning(NULL, NULL, primary, tmp, NULL);
 			g_free(tmp);
 
 			purple_plugin_disable(plug);
--- a/pidgin/gtkpounce.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkpounce.c	Sat Sep 21 17:01:08 2013 +0530
@@ -263,8 +263,8 @@
 
 	if (*name == '\0')
 	{
-		purple_notify_error(NULL, NULL,
-						  _("Please enter a buddy to pounce."), NULL);
+		purple_notify_error(NULL, NULL, _("Please enter a buddy to "
+			"pounce."), NULL, NULL);
 		return;
 	}
 
@@ -461,7 +461,7 @@
 			{
 				purple_notify_error(NULL, NULL,
 					_("You are not currently signed on with an account that "
-					  "can add that buddy."), NULL);
+					  "can add that buddy."), NULL, NULL);
 			}
 			else
 			{
--- a/pidgin/gtkprefs.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkprefs.c	Sat Sep 21 17:01:08 2013 +0530
@@ -952,7 +952,7 @@
 
 		/* Fire! */
 		if (system(command)) {
-			purple_notify_error(NULL, NULL, _("Theme failed to unpack."), NULL);
+			purple_notify_error(NULL, NULL, _("Theme failed to unpack."), NULL, NULL);
 			g_free(command);
 			g_free(destdir);
 			free_theme_info(info);
@@ -960,7 +960,7 @@
 		}
 #else
 		if (!winpidgin_gz_untar(path, destdir)) {
-			purple_notify_error(NULL, NULL, _("Theme failed to unpack."), NULL);
+			purple_notify_error(NULL, NULL, _("Theme failed to unpack."), NULL, NULL);
 			g_free(destdir);
 			free_theme_info(info);
 			return;
@@ -1005,7 +1005,7 @@
 		} else {
 			/* something was wrong with the theme archive */
 			g_unlink(destdir);
-			purple_notify_error(NULL, NULL, _("Theme failed to load."), NULL);
+			purple_notify_error(NULL, NULL, _("Theme failed to load."), NULL, NULL);
 		}
 
 	} else { /* just a single file so copy it to a new temp directory and attempt to load it*/
@@ -1053,10 +1053,10 @@
 					purple_debug_error("gtkprefs", "Error removing %s: %s\n",
 							temp_path, g_strerror(errno));
 				}
-				purple_notify_error(NULL, NULL, _("Theme failed to load."), NULL);
+				purple_notify_error(NULL, NULL, _("Theme failed to load."), NULL, NULL);
 			}
 		} else {
-			purple_notify_error(NULL, NULL, _("Theme failed to copy."), NULL);
+			purple_notify_error(NULL, NULL, _("Theme failed to copy."), NULL, NULL);
 		}
 
 		g_free(temp_file);
@@ -2077,7 +2077,7 @@
 	if (g_spawn_command_line_async(program, &err))
 		return;
 
-	purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message);
+	purple_notify_error(NULL, NULL, _("Cannot start proxy configuration program."), err->message, NULL);
 	g_error_free(err);
 }
 
@@ -2090,7 +2090,7 @@
 	if (g_spawn_command_line_async(path, &err))
 		return;
 
-	purple_notify_error(NULL, NULL, _("Cannot start browser configuration program."), err->message);
+	purple_notify_error(NULL, NULL, _("Cannot start browser configuration program."), err->message, NULL);
 	g_error_free(err);
 }
 #endif
@@ -2819,7 +2819,7 @@
 	if (error != NULL) {
 		pidgin_prefs_dropdown_revert_active(keyring_combo);
 		purple_notify_error(NULL, _("Keyring"),
-			_("Failed to set new keyring"), error->message);
+			_("Failed to set new keyring"), error->message, NULL);
 		return;
 	}
 
@@ -2845,7 +2845,7 @@
 	if (keyring == NULL) {
 		pidgin_prefs_dropdown_revert_active(keyring_combo);
 		purple_notify_error(NULL, _("Keyring"),
-			_("Selected keyring is disabled"), NULL);
+			_("Selected keyring is disabled"), NULL, NULL);
 		return;
 	}
 
--- a/pidgin/gtksavedstatuses.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtksavedstatuses.c	Sat Sep 21 17:01:08 2013 +0530
@@ -726,7 +726,7 @@
 		((dialog->original_title == NULL) || (strcmp(title, dialog->original_title))))
 	{
 		purple_notify_error(status_window, NULL, _("Title already in use.  You must "
-						  "choose a unique title."), NULL);
+						  "choose a unique title."), NULL, NULL);
 		return;
 	}
 
--- a/pidgin/gtksmiley.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtksmiley.c	Sat Sep 21 17:01:08 2013 +0530
@@ -240,7 +240,7 @@
 		msg = g_strdup_printf(_("A custom smiley for '%s' already exists.  "
 				"Please use a different shortcut."), entry);
 		purple_notify_error(s->parent, _("Custom Smiley"),
-				_("Duplicate Shortcut"), msg);
+				_("Duplicate Shortcut"), msg, NULL);
 		g_free(msg);
 		return;
 	}
--- a/pidgin/gtksound.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtksound.c	Sat Sep 21 17:01:08 2013 +0530
@@ -321,7 +321,7 @@
 	if ((gst_init_failed = !gst_init_check(NULL, NULL, &error))) {
 		purple_notify_error(NULL, _("GStreamer Failure"),
 					_("GStreamer failed to initialize."),
-					error ? error->message : "");
+					error ? error->message : "", NULL);
 		if (error) {
 			g_error_free(error);
 			error = NULL;
--- a/pidgin/gtkutils.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkutils.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1357,8 +1357,7 @@
 			str = g_strdup_printf(_("The following error has occurred loading %s: %s"),
 						data->filename, g_strerror(errno));
 			purple_notify_error(NULL, NULL,
-					  _("Failed to load image"),
-					  str);
+				_("Failed to load image"), str, NULL);
 			g_free(str);
 
 			break;
@@ -1385,8 +1384,7 @@
 
 			str = g_strdup_printf(_("The following error has occurred loading %s: %s"), data->filename, err->message);
 			purple_notify_error(NULL, NULL,
-					  _("Failed to load image"),
-					  str);
+				_("Failed to load image"), str, NULL);
 
 			g_error_free(err);
 			g_free(str);
@@ -1462,8 +1460,8 @@
 			str = g_strdup_printf(_("Cannot send folder %s."), basename);
 			str2 = g_strdup_printf(_("%s cannot transfer a folder. You will need to send the files within individually."), PIDGIN_NAME);
 
-			purple_notify_error(NULL, NULL,
-					  str, str2);
+			purple_notify_error(NULL, NULL, str, str2,
+				purple_request_cpar_from_connection(gc));
 
 			g_free(str);
 			g_free(str2);
@@ -1575,7 +1573,7 @@
 				                    _("You dragged a desktop launcher. Most "
 				                      "likely you wanted to send the target "
 				                      "of this launcher instead of this "
-				                      "launcher itself."));
+				                      "launcher itself."), NULL);
 				break;
 			}
 			purple_desktop_item_unref(item);
@@ -2414,7 +2412,7 @@
 
 	tmp = g_strdup_printf(_("The file '%s' is too large for %s.  Please try a smaller image.\n"),
 			path, purple_protocol_get_name(protocol));
-	purple_notify_error(NULL, _("Icon Error"), _("Could not set icon"), tmp);
+	purple_notify_error(NULL, _("Icon Error"), _("Could not set icon"), tmp, NULL);
 	g_free(tmp);
 
 	return NULL;
@@ -2597,8 +2595,8 @@
 
 	if (g_ascii_strcasecmp(key, "Global Thermonuclear War") == 0)
 	{
-		purple_notify_info(NULL, "WOPR",
-				"Wouldn't you prefer a nice game of chess?", NULL);
+		purple_notify_info(NULL, "WOPR", "Wouldn't you prefer a nice "
+			"game of chess?", NULL, NULL);
 		return FALSE;
 	}
 
@@ -3242,7 +3240,7 @@
 		{
 			tmp = g_strdup_printf(_("Error launching %s: %s"),
 							uri, error->message);
-			purple_notify_error(webview, NULL, _("Unable to open file."), tmp);
+			purple_notify_error(webview, NULL, _("Unable to open file."), tmp, NULL);
 			g_free(tmp);
 			g_error_free(error);
 		}
@@ -3251,7 +3249,7 @@
 			char *primary = g_strdup_printf(_("Error running %s"), command);
 			char *secondary = g_strdup_printf(_("Process returned error code %d"),
 									exit_status);
-			purple_notify_error(webview, NULL, primary, secondary);
+			purple_notify_error(webview, NULL, primary, secondary, NULL);
 			g_free(tmp);
 		}
 	}
--- a/pidgin/gtkwebviewtoolbar.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkwebviewtoolbar.c	Sat Sep 21 17:01:08 2013 +0530
@@ -565,7 +565,7 @@
 		return;
 
 	if (!g_file_get_contents(filename, &filedata, &size, &error)) {
-		purple_notify_error(NULL, NULL, error->message, NULL);
+		purple_notify_error(NULL, NULL, error->message, NULL, NULL);
 
 		g_error_free(error);
 		g_free(filename);
@@ -579,7 +579,7 @@
 
 	if (id == 0) {
 		buf = g_strdup_printf(_("Failed to store image: %s\n"), filename);
-		purple_notify_error(NULL, NULL, buf, NULL);
+		purple_notify_error(NULL, NULL, buf, NULL, NULL);
 
 		g_free(buf);
 		g_free(filename);
--- a/pidgin/gtkxfer.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/gtkxfer.c	Sat Sep 21 17:01:08 2013 +0530
@@ -516,7 +516,7 @@
 			tmp = g_strdup_printf(_("Error launching %s: %s"),
 							purple_xfer_get_local_filename(dialog->selected_xfer),
 							error->message);
-			purple_notify_error(dialog, NULL, _("Unable to open file."), tmp);
+			purple_notify_error(dialog, NULL, _("Unable to open file."), tmp, NULL);
 			g_free(tmp);
 			g_error_free(error);
 		}
@@ -525,7 +525,7 @@
 			char *primary = g_strdup_printf(_("Error running %s"), command);
 			char *secondary = g_strdup_printf(_("Process returned error code %d"),
 									exit_status);
-			purple_notify_error(dialog, NULL, primary, secondary);
+			purple_notify_error(dialog, NULL, primary, secondary, NULL);
 			g_free(tmp);
 		}
 	}
--- a/pidgin/plugins/disco/gtkdisco.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/plugins/disco/gtkdisco.c	Sat Sep 21 17:01:08 2013 +0530
@@ -175,7 +175,7 @@
 
 	if (!server || !*server) {
 		purple_notify_error(my_plugin, _("Invalid Server"), _("Invalid Server"),
-		                    NULL);
+			NULL, purple_request_cpar_from_connection(pdl->pc));
 
 		pidgin_disco_list_set_in_progress(pdl, FALSE);
 		pidgin_disco_list_unref(pdl);
--- a/pidgin/plugins/disco/xmppdisco.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/plugins/disco/xmppdisco.c	Sat Sep 21 17:01:08 2013 +0530
@@ -513,12 +513,12 @@
 		 || purple_xmlnode_get_child(error, "jid-malformed")) {
 			purple_notify_error(my_plugin, _("Error"),
 			                    _("Server does not exist"),
- 			                    NULL);
+ 			                    NULL, NULL);
 		}
 		else {
 			purple_notify_error(my_plugin, _("Error"),
 			                    _("Server does not support service discovery"),
-			                    NULL);
+			                    NULL, NULL);
 		}
 		pidgin_disco_list_set_in_progress(list, FALSE);
 		g_free(cb_data);
--- a/pidgin/plugins/history.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/plugins/history.c	Sat Sep 21 17:01:08 2013 +0530
@@ -180,7 +180,7 @@
 		purple_notify_warning(plugin, NULL, _("History Plugin Requires Logging"),
 							_("Logging can be enabled from Tools -> Preferences -> Logging.\n\n"
 							  "Enabling logs for instant messages and/or chats will activate "
-							  "history for the same conversation type(s)."));
+							  "history for the same conversation type(s)."), NULL);
 	}
 }
 
--- a/pidgin/plugins/musicmessaging/musicmessaging.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/plugins/musicmessaging/musicmessaging.c	Sat Sep 21 17:01:08 2013 +0530
@@ -145,7 +145,7 @@
 	MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
 
 	purple_notify_message(plugin_pointer, PURPLE_NOTIFY_MSG_INFO, command,
-                        parameters, NULL, NULL, NULL);
+                        parameters, NULL, NULL, NULL, NULL);
 
 	if (mmconv->started)
 	{
@@ -167,7 +167,7 @@
 	MMConversation *mmconv = (MMConversation *)g_list_nth_data(conversations, session);
 
 	purple_notify_message(plugin_pointer, PURPLE_NOTIFY_MSG_INFO, "Session",
-						"Session Complete", NULL, NULL, NULL);
+						"Session Complete", NULL, NULL, NULL, NULL);
 
 	session_end(mmconv);
 }
@@ -379,7 +379,7 @@
 				{
 					purple_notify_message(plugin_pointer, PURPLE_NOTIFY_MSG_ERROR,
 							    _("Music Messaging"),
-							    _("There was a conflict in running the command:"), command, NULL, NULL);
+							    _("There was a conflict in running the command:"), command, NULL, NULL, NULL);
 				}
 			}
 		}
@@ -488,7 +488,7 @@
 	if (!(g_spawn_async (".", args, NULL, 4, NULL, NULL, &(mmconv->pid), &spawn_error)))
 	{
 		purple_notify_error(plugin_pointer, _("Error Running Editor"),
-				  _("The following error has occurred:"), spawn_error->message);
+				  _("The following error has occurred:"), spawn_error->message, NULL);
 		mmconv->started = FALSE;
 	}
 	else
--- a/pidgin/plugins/spellchk.c	Sat Sep 21 01:33:16 2013 +0530
+++ b/pidgin/plugins/spellchk.c	Sat Sep 21 17:01:08 2013 +0530
@@ -1974,7 +1974,7 @@
 
 				purple_notify_error(NULL, _("Duplicate Correction"),
 					_("The specified word already exists in the correction list."),
-					gtk_entry_get_text(GTK_ENTRY(bad_entry)));
+					gtk_entry_get_text(GTK_ENTRY(bad_entry)), NULL);
 				return;
 			}
 

mercurial