[anjal] BUGFIX: GNOME Bugzilla #589985 - Show composer when emails are clicked



commit 75f612dfe5ad49effc8f1dc827d807eb074d7540
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Tue Jul 28 21:27:22 2009 +0530

    BUGFIX: GNOME Bugzilla #589985 -  Show composer when emails are clicked
    on the body.

 src/mail-message-view.c |   17 +++++++++++++++--
 src/mail-shell.c        |   10 ++++++++++
 src/mail-shell.h        |    1 +
 3 files changed, 26 insertions(+), 2 deletions(-)
---
diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index 7a1484b..371f648 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -514,7 +514,7 @@ construct_reply_composer (MailMessageView *mmv, int mode)
 		e_composer_header_table_set_header_visible (table, E_COMPOSER_HEADER_SUBJECT, FALSE);
 		gtk_container_add ((GtkContainer *)mmv->frame, box);
 		tmp = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
-		gtk_alignment_set_padding (tmp, 0, 0, 0, 20);
+		gtk_alignment_set_padding ((GtkAlignment *)tmp, 0, 0, 0, 20);
 		gtk_widget_show (tmp);
 		gtk_box_pack_start ((GtkBox *)mmv->cbox, tmp, FALSE, FALSE, 18);
 		gtk_box_pack_start ((GtkBox *)mmv->cbox, mmv->frame, TRUE, TRUE, 6);
@@ -911,6 +911,18 @@ mmv_sh_color_expose (GtkWidget *w, GdkEventExpose *event, MailMessageView *mmv)
 
 
 #if HAVE_WEBKIT
+
+gint
+mmv_nav (gpointer a, gpointer b, gpointer c, gpointer d)
+{
+	const char *uri = webkit_network_request_get_uri(c);
+
+	if (strncmp(uri, "mailto:";, 7) == 0)
+		mail_shell_create_composer_mailto (uri);
+
+	return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
+}
+
 GtkWidget *
 mmv_create_webview (MailMessageView *mmv, GtkWidget *box)
 {
@@ -924,7 +936,8 @@ mmv_create_webview (MailMessageView *mmv, GtkWidget *box)
 	g_signal_connect (web, "load-started", G_CALLBACK(mmv_finished_webkit), mmv);
 	g_signal_connect (web, "load-finished", G_CALLBACK(mmv_finished_loading_webkit), mmv);
 	g_signal_connect (web, "button-press-event", G_CALLBACK (mmv_button_press), mmv);
-	
+	g_signal_connect (web, "navigation-requested", G_CALLBACK (mmv_nav), mmv);
+
 	gtk_box_pack_start ((GtkBox *)box, scroll, FALSE, FALSE, 0);
 	webkit_web_view_set_editable (web, FALSE);
 	gtk_widget_show ((GtkWidget *)web);
diff --git a/src/mail-shell.c b/src/mail-shell.c
index d3b5f7b..a93eae9 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -233,6 +233,16 @@ mail_shell_create_composer (void)
 	return mail_view_add_page ((MailView *)view, MAIL_VIEW_COMPOSER, NULL);
 }
 
+MailViewChild *
+mail_shell_create_composer_mailto (const char *uri)
+{
+	MailComponent *mc = mail_component_peek ();
+	MailView *view = (MailView *)mc->mail_view;
+	GtkWidget *composer = (GtkWidget *) em_utils_compose_new_message_with_mailto (uri, NULL);
+	gtk_widget_show (view->folder_tree);
+
+	return mail_view_add_page (view, MAIL_VIEW_COMPOSER, (gpointer)composer);
+}
 static void
 ms_check_mail  (GtkButton *button, gpointer data)
 {
diff --git a/src/mail-shell.h b/src/mail-shell.h
index d7bd68a..da2c4cd 100644
--- a/src/mail-shell.h
+++ b/src/mail-shell.h
@@ -55,6 +55,7 @@ MailShell * mail_shell_new (void);
 MailViewChild *mail_shell_create_composer (void);
 void mail_shell_set_cmdline_args (MailShell *shell, char **args);
 void mail_shell_handle_cmdline (MailShell *shell);
+MailViewChild * mail_shell_create_composer_mailto (const char *uri);
 #endif
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]