From d14deec66b55d57c8e66c41f14a7f4e5be4e6039 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Tue, 1 Dec 2009 13:20:24 +0100 Subject: [PATCH] On tapping back button in shell, close last window. --- src/gtk/modest-shell.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/gtk/modest-shell.c b/src/gtk/modest-shell.c index 951a70e..916f5a2 100644 --- a/src/gtk/modest-shell.c +++ b/src/gtk/modest-shell.c @@ -38,6 +38,8 @@ static void modest_shell_finalize (GObject *obj); static void update_title (ModestShell *self); +static void on_back_button_clicked (GtkToolButton *button, ModestShell *self); + typedef struct _ModestShellPrivate ModestShellPrivate; struct _ModestShellPrivate { @@ -112,6 +114,7 @@ modest_shell_instance_init (ModestShell *obj) priv->back_button = gtk_tool_button_new_from_stock (GTK_STOCK_GO_BACK); gtk_toolbar_insert (GTK_TOOLBAR (priv->top_toolbar), priv->back_button, -1); gtk_widget_show (GTK_WIDGET (priv->back_button)); + g_signal_connect (G_OBJECT (priv->back_button), "clicked", G_CALLBACK (on_back_button_clicked), obj); title_vbox = gtk_vbox_new (FALSE, 0); priv->title_label = gtk_label_new (NULL); @@ -270,3 +273,25 @@ update_title (ModestShell *self) subtitle_buffer->str); g_string_free (subtitle_buffer, TRUE); } + +static void +on_back_button_clicked (GtkToolButton *button, ModestShell *self) +{ + ModestShellPrivate *priv; + gint n_pages; + gboolean delete_event_retval; + GtkWidget *child; + + priv = MODEST_SHELL_GET_PRIVATE (self); + + n_pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (priv->notebook)); + if (n_pages < 1) + return; + + child = gtk_notebook_get_nth_page (GTK_NOTEBOOK (priv->notebook), -1); + g_signal_emit_by_name (G_OBJECT (child), "delete-event", NULL, &delete_event_retval); + + if (!delete_event_retval) { + update_title (self); + } +} -- 1.7.9.5