From: Sergio Villar SenĂ­n Date: Tue, 12 May 2009 10:30:43 +0000 (+0200) Subject: Fixes NB#102523, show accounts window when deleting the last account and viewing... X-Git-Tag: 3.0.17-rc4~3 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=b28dbbbd1e18bb6e09c6a9ebbbfcb238e104be67 Fixes NB#102523, show accounts window when deleting the last account and viewing the outbox folder --- diff --git a/src/hildon2/modest-accounts-window.c b/src/hildon2/modest-accounts-window.c index 309178b..c172f9b 100644 --- a/src/hildon2/modest-accounts-window.c +++ b/src/hildon2/modest-accounts-window.c @@ -538,12 +538,13 @@ on_row_deleted (GtkTreeModel *tree_model, row_count_changed (self); } -static void row_count_changed (ModestAccountsWindow *self) +static void +row_count_changed (ModestAccountsWindow *self) { ModestAccountsWindowPrivate *priv; GtkTreeModel *model; gint count; - + priv = MODEST_ACCOUNTS_WINDOW_GET_PRIVATE (self); model = gtk_tree_view_get_model (GTK_TREE_VIEW (priv->account_view)); @@ -552,9 +553,11 @@ static void row_count_changed (ModestAccountsWindow *self) if (count == 0) { gtk_widget_hide (priv->account_view); gtk_widget_show (priv->no_accounts_container); + g_debug ("%s: hiding accounts view", __FUNCTION__); } else { gtk_widget_hide (priv->no_accounts_container); gtk_widget_show (priv->account_view); + g_debug ("%s: showing accounts view", __FUNCTION__); } gtk_container_child_set (GTK_CONTAINER(priv->box), priv->pannable, "expand", count > 0, diff --git a/src/hildon2/modest-hildon2-window-mgr.c b/src/hildon2/modest-hildon2-window-mgr.c index 5d8d156..5b946e1 100644 --- a/src/hildon2/modest-hildon2-window-mgr.c +++ b/src/hildon2/modest-hildon2-window-mgr.c @@ -877,6 +877,23 @@ modest_hildon2_window_mgr_set_modal (ModestWindowMgr *self, } static void +close_all_but_first (HildonWindowStack *stack) +{ + gint num_windows, i; + gboolean retval; + + num_windows = hildon_window_stack_size (stack); + + for (i = 0; i < (num_windows - 1); i++) { + GtkWidget *current_top; + + /* Close window */ + current_top = hildon_window_stack_peek (stack); + g_signal_emit_by_name (G_OBJECT (current_top), "delete-event", NULL, &retval); + } +} + +static void on_account_removed (TnyAccountStore *acc_store, TnyAccount *account, gpointer user_data) @@ -904,8 +921,6 @@ on_account_removed (TnyAccountStore *acc_store, header_view = modest_header_window_get_header_view (MODEST_HEADER_WINDOW (current_top)); folder = modest_header_view_get_folder (header_view); if (folder) { - gboolean retval; - /* Close if it's my account */ if (!TNY_IS_MERGE_FOLDER (folder)) { TnyAccount *my_account; @@ -913,9 +928,7 @@ on_account_removed (TnyAccountStore *acc_store, my_account = tny_folder_get_account (folder); if (my_account) { if (my_account == account) { - g_signal_emit_by_name (G_OBJECT (current_top), - "delete-event", - NULL, &retval); + close_all_but_first (stack); deleted = TRUE; } g_object_unref (my_account); @@ -925,17 +938,14 @@ on_account_removed (TnyAccountStore *acc_store, /* Close if viewing outbox and no account left */ if (tny_folder_get_folder_type (folder) == TNY_FOLDER_TYPE_OUTBOX) { if (!has_accounts) { - g_signal_emit_by_name (G_OBJECT (current_top), - "delete-event", - NULL, &retval); + close_all_but_first (stack); deleted = TRUE; } } g_object_unref (folder); - if (deleted) { + if (deleted) current_top = (ModestWindow *) hildon_window_stack_peek (stack); - } } } }