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 ++++++----------------- 1 file changed, 6 insertions(+), 17 deletions(-) (limited to 'libempathy-gtk') 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) -- cgit v1.2.3