diff options
author | Paul Aurich <darkrain42@pidgin.im> | 2009-11-07 03:45:13 +0000 |
---|---|---|
committer | Paul Aurich <darkrain42@pidgin.im> | 2009-11-07 03:45:13 +0000 |
commit | 86a8a71aea2fdb10adc3e89376c425932d0bd14c (patch) | |
tree | 957c4afca0ed1986fe0481df5e7bd24cfdfe0ea0 | |
parent | e08fd14e55cfa7a6da03b11106834fda0f789d4e (diff) | |
download | pidgin-86a8a71aea2fdb10adc3e89376c425932d0bd14c.tar.gz |
xmppdisco: Close the input request when closing the dialog. Fixes a crash.
-rw-r--r-- | pidgin/plugins/disco/gtkdisco.c | 8 | ||||
-rw-r--r-- | pidgin/plugins/disco/gtkdisco.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/pidgin/plugins/disco/gtkdisco.c b/pidgin/plugins/disco/gtkdisco.c index 92b078b77b..320b49541e 100644 --- a/pidgin/plugins/disco/gtkdisco.c +++ b/pidgin/plugins/disco/gtkdisco.c @@ -162,12 +162,15 @@ static void register_button_cb(GtkWidget *unused, PidginDiscoDialog *dialog) 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 *button, PidginDiscoDialog *dialog) /* 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, gpointer d) 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; diff --git a/pidgin/plugins/disco/gtkdisco.h b/pidgin/plugins/disco/gtkdisco.h index 8f2fa5b20b..0c1aaba73a 100644 --- a/pidgin/plugins/disco/gtkdisco.h +++ b/pidgin/plugins/disco/gtkdisco.h @@ -43,6 +43,8 @@ struct _PidginDiscoDialog { PurpleAccount *account; PidginDiscoList *discolist; + + gpointer *prompt_handle; }; struct _PidginDiscoList { |