summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Aurich <darkrain42@pidgin.im>2009-11-07 03:45:13 +0000
committerPaul Aurich <darkrain42@pidgin.im>2009-11-07 03:45:13 +0000
commit86a8a71aea2fdb10adc3e89376c425932d0bd14c (patch)
tree957c4afca0ed1986fe0481df5e7bd24cfdfe0ea0
parente08fd14e55cfa7a6da03b11106834fda0f789d4e (diff)
downloadpidgin-86a8a71aea2fdb10adc3e89376c425932d0bd14c.tar.gz
xmppdisco: Close the input request when closing the dialog. Fixes a crash.
-rw-r--r--pidgin/plugins/disco/gtkdisco.c8
-rw-r--r--pidgin/plugins/disco/gtkdisco.h2
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 {