pidgin: c3be7591: xmppdisco: Close the input request when ...

darkrain42 at pidgin.im darkrain42 at pidgin.im
Fri Nov 6 22:50:40 EST 2009


-----------------------------------------------------------------
Revision: c3be7591114fdb749db60b5a72647b3fdd8e6e9e
Ancestor: 7d05e888d59df1b4bc3258d7ca667c58c646037e
Author: darkrain42 at pidgin.im
Date: 2009-11-07T03:45:13
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/c3be7591114fdb749db60b5a72647b3fdd8e6e9e

Modified files:
        pidgin/plugins/disco/gtkdisco.c
        pidgin/plugins/disco/gtkdisco.h

ChangeLog: 

xmppdisco: Close the input request when closing the dialog.  Fixes a crash.

-------------- next part --------------
============================================================
--- pidgin/plugins/disco/gtkdisco.c	f548a94bcd8a21c5bc18ebc997e5d81998e60bf8
+++ pidgin/plugins/disco/gtkdisco.c	0ceb6d42f2e485937e9deae6cf35014d3b7ddf45
@@ -162,12 +162,15 @@ static void discolist_cancel_cb(PidginDi
 
 static void discolist_cancel_cb(PidginDiscoList *pdl, const char *server)
 {
+	pdl->dialog->prompt_handle = NULL;
+
 	pidgin_disco_list_set_in_progress(pdl, FALSE);
 	pidgin_disco_list_unref(pdl);
 }
 
 static void discolist_ok_cb(PidginDiscoList *pdl, const char *server)
 {
+	pdl->dialog->prompt_handle = NULL;
 	gtk_widget_set_sensitive(pdl->dialog->browse_button, TRUE);
 
 	if (!server || !*server) {
@@ -236,7 +239,7 @@ static void browse_button_cb(GtkWidget *
 
 	/* Note to translators: The string "Enter an XMPP Server" is asking the
 	   user to type the name of an XMPP server which will then be queried */
-	purple_request_input(my_plugin, _("Server name request"), _("Enter an XMPP Server"),
+	dialog->prompt_handle = purple_request_input(my_plugin, _("Server name request"), _("Enter an XMPP Server"),
 			_("Select an XMPP server to query"),
 			server, FALSE, FALSE, NULL,
 			_("Find Services"), PURPLE_CALLBACK(discolist_ok_cb),
@@ -390,6 +393,9 @@ destroy_win_cb(GtkWidget *window, gpoint
 	PidginDiscoDialog *dialog = d;
 	PidginDiscoList *list = dialog->discolist;
 
+	if (dialog->prompt_handle)
+		purple_request_close(PURPLE_REQUEST_INPUT, dialog->prompt_handle);
+
 	if (list) {
 		list->dialog = NULL;
 
============================================================
--- pidgin/plugins/disco/gtkdisco.h	314a7bc42016d7fbdb310f4484372d8d86200967
+++ pidgin/plugins/disco/gtkdisco.h	683e67ebcfd1c8a9c09abf7b90ecd1b915d6cff3
@@ -43,6 +43,8 @@ struct _PidginDiscoDialog {
 
 	PurpleAccount *account;
 	PidginDiscoList *discolist;
+
+	gpointer *prompt_handle;
 };
 
 struct _PidginDiscoList {


More information about the Commits mailing list