From: Murray Cumming Date: Fri, 27 Jul 2007 09:12:10 +0000 (+0000) Subject: 2007-07-27 Murray Cumming X-Git-Tag: git_migration_finished~2726 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=f3b6305ffd1aeebad570acf56fbb51f697766965 2007-07-27 Murray Cumming * src/maemo/modest-account-view-window.c: (on_new_button_clicked): Remember the wizard dialog instance, so we can just present it again if necessary. This prevents multiple windows from appearing if you click again quickly on the New button before the dialog appears, fixing projects.maemo.org bug NB#64169. pmo-trunk-r2817 --- diff --git a/ChangeLog2 b/ChangeLog2 index 80ce63a..2f8bb8f 100644 --- a/ChangeLog2 +++ b/ChangeLog2 @@ -1,5 +1,14 @@ 2007-07-27 Murray Cumming + * src/maemo/modest-account-view-window.c: + (on_new_button_clicked): Remember the wizard dialog instance, + so we can just present it again if necessary. This prevents + multiple windows from appearing if you click again quickly on the + New button before the dialog appears, fixing projects.maemo.org + bug NB#64169. + +2007-07-27 Murray Cumming + * src/maemo/modest-main-window.c: (modest_main_window_on_show): Offer a connection dialog if there is no connection when starting modest. This should fix projects.maemo.org bug NB#61134. diff --git a/src/maemo/modest-account-view-window.c b/src/maemo/modest-account-view-window.c index a22c47b..e77b335 100644 --- a/src/maemo/modest-account-view-window.c +++ b/src/maemo/modest-account-view-window.c @@ -61,6 +61,9 @@ struct _ModestAccountViewWindowPrivate { GtkWidget *delete_button; GtkWidget *close_button; ModestAccountView *account_view; + + /* We remember this so that we only open one at a time: */ + ModestEasysetupWizardDialog *wizard; }; #define MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \ MODEST_TYPE_ACCOUNT_VIEW_WINDOW, \ @@ -117,6 +120,13 @@ modest_account_view_window_class_init (ModestAccountViewWindowClass *klass) static void modest_account_view_window_finalize (GObject *obj) { + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(obj); + + if (priv->wizard) { + gtk_widget_destroy (GTK_WIDGET (priv->wizard)); + priv->wizard = NULL; + } + G_OBJECT_CLASS(parent_class)->finalize (obj); } @@ -239,11 +249,42 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) } static void +on_wizard_response (GtkDialog *dialog, gint response, gpointer user_data) +{ + ModestAccountViewWindow *self = MODEST_ACCOUNT_VIEW_WINDOW (user_data); + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + + /* The response has already been handled by the wizard dialog itself, + * creating the new account. + */ + + /* Destroy the dialog: */ + if (priv->wizard) { + gtk_widget_destroy (GTK_WIDGET (priv->wizard)); + priv->wizard = NULL; + } +} + +static void on_new_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) { + ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); + /* Show the easy-setup wizard: */ - ModestEasysetupWizardDialog *wizard = modest_easysetup_wizard_dialog_new (); - modest_maemo_show_dialog_and_forget (GTK_WINDOW (self), GTK_DIALOG (wizard)); + + if (priv->wizard) { + /* Just show the existing window: */ + gtk_window_present (GTK_WINDOW (priv->wizard)); + } else { + /* Create and show the dialog: */ + priv->wizard = modest_easysetup_wizard_dialog_new (); + + gtk_window_set_transient_for (GTK_WINDOW (priv->wizard), GTK_WINDOW (self)); + + /* Destroy the dialog when it is closed: */ + g_signal_connect (G_OBJECT (priv->wizard), "response", G_CALLBACK (on_wizard_response), self); + gtk_widget_show (GTK_WIDGET (priv->wizard)); + } }