From 085365f20953fae1fb95d0272677273e3840e98f Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Tue, 8 May 2012 13:50:03 +0200 Subject: new-account-dialog: rely on the EmpathyAccountWidget::close signal User of the dialog should wait for the widget to be completely done before destroying it. Change the 'success' dialog response to GTK_RESPONSE_APPLY to stay coherent with the response type received from EmpathyAccountWidget. https://bugzilla.gnome.org/show_bug.cgi?id=675667 --- libempathy-gtk/empathy-new-account-dialog.c | 23 ++++++----------------- src/empathy-accounts-dialog.c | 2 +- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/libempathy-gtk/empathy-new-account-dialog.c b/libempathy-gtk/empathy-new-account-dialog.c index 180cc4198..ed09be829 100644 --- a/libempathy-gtk/empathy-new-account-dialog.c +++ b/libempathy-gtk/empathy-new-account-dialog.c @@ -42,18 +42,11 @@ struct _EmpathyNewAccountDialogPrivate }; static void -account_created_cb (EmpathyAccountWidget *widget, - TpAccount *account, +close_cb (EmpathyAccountWidget *widget, + GtkResponseType response, EmpathyNewAccountDialog *self) { - gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK); -} - -static void -cancelled_cb (EmpathyAccountWidget *widget, - EmpathyNewAccountDialog *self) -{ - gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_CANCEL); + gtk_dialog_response (GTK_DIALOG (self), response); } static void @@ -87,9 +80,7 @@ protocol_changed_cb (GtkComboBox *chooser, if (self->priv->current_account_widget != NULL) { g_signal_handlers_disconnect_by_func (self->priv->current_account_widget, - account_created_cb, self); - g_signal_handlers_disconnect_by_func (self->priv->current_account_widget, - cancelled_cb, self); + close_cb, self); gtk_widget_destroy (GTK_WIDGET (self->priv->current_account_widget)); } @@ -98,10 +89,8 @@ protocol_changed_cb (GtkComboBox *chooser, self->priv->settings = settings; - g_signal_connect (self->priv->current_account_widget, "account-created", - G_CALLBACK (account_created_cb), self); - g_signal_connect (self->priv->current_account_widget, "cancelled", - G_CALLBACK (cancelled_cb), self); + g_signal_connect (self->priv->current_account_widget, "close", + G_CALLBACK (close_cb), self); /* Restore "account" and "password" parameters in the new widget */ if (account != NULL) diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c index 9c5715bc0..a9b65b25d 100644 --- a/src/empathy-accounts-dialog.c +++ b/src/empathy-accounts-dialog.c @@ -996,7 +996,7 @@ accounts_dialog_button_add_clicked_cb (GtkWidget *button, response = gtk_dialog_run (GTK_DIALOG (dialog)); - if (response == GTK_RESPONSE_OK) + if (response == GTK_RESPONSE_APPLY) { EmpathyAccountSettings *settings; TpAccount *account; -- cgit v1.2.3