[anjal] Fix quite a lot of issues.



commit 65527facff6920c5444f6fe61af744740e86f35b
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Thu Mar 19 11:57:06 2009 +0530

    Fix quite a lot of issues.
---
 src/mail-message-view.c |   37 +++++++++++++++++++++++++++++--------
 1 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index 3a30542..6f69d1f 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -29,7 +29,7 @@
 #include "mail/mail-session.h"
 #include "mail/mail-ops.h"
 #include "e-msg-composer.h"
-
+#include "misc/e-spinner.h"
 #include <gdk/gdkkeysyms.h>
 
 extern char *scolor_norm;
@@ -41,6 +41,7 @@ struct  _MailMessageViewPrivate {
 	GtkWidget *arrow;
 	GtkWidget *focus;
 	CamelMimeMessage *msg;
+	 CamelMessageInfo *info;
 	GtkWidget *header_row;
 	const char *active_color;
 	GtkWidget *spinner;
@@ -70,9 +71,13 @@ mail_message_view_finalize (GObject *object)
 {
 	MailMessageView *shell = (MailMessageView *)object;
 	MailMessageViewPrivate *priv = shell->priv;
-	
+
+	g_object_unref (shell->efwd);
+	g_free (priv->uid);
+	camel_object_unref (priv->msg);
+	camel_message_info_free (priv->info);
 	g_free (priv);
-	
+
 	G_OBJECT_CLASS (mail_message_view_parent_class)->finalize (object);
 }
 
@@ -298,6 +303,23 @@ filter_date (time_t date)
 	return g_strdup (buf);
 }
 
+static int
+mark_mail_read  (GtkWidget *w, GdkEventExpose *event, MailMessageView *mmv)
+{
+	 printf("mark %s as read: %s\n", camel_message_info_subject(mmv->priv->info),mmv->priv->info->uid );
+	 g_signal_handlers_disconnect_by_func(w, mark_mail_read, mmv);
+	return FALSE;
+}
+
+static void
+mmv_finished (WebKitWebView  *webkitwebview, WebKitWebFrame *arg1, gpointer user_data)
+{
+	 MailMessageView *mmview = (MailMessageView *) user_data;
+	gtk_widget_set_size_request (webkitwebview, -1, webkit_web_frame_get_height(arg1));
+
+	/* Connect on expose, and mark mail as read on expose, when the mail is actually seen */
+	g_signal_connect (webkitwebview, "expose-event" , mark_mail_read, mmview);
+}
 
 static void
 mmv_loaded (WebKitWebView  *webkitwebview, WebKitWebFrame *arg1, gpointer user_data)
@@ -368,7 +390,7 @@ mail_message_view_create_webview (MailMessageView *mmv, GtkWidget *box)
 {
 	WebKitWebView *web = webkit_web_view_new ();
 
-	g_signal_connect (web, "load-finished", G_CALLBACK(mmv_loaded), mmv);
+	g_signal_connect (web, "load-finished", G_CALLBACK(mmv_finished), mmv);
 	g_signal_connect (web, "load-committed", G_CALLBACK(mmv_loaded), mmv);
 	g_signal_connect (web, "load-started", G_CALLBACK(mmv_loaded), mmv);
 
@@ -397,7 +419,7 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 	mmview->priv->active_color = scolor_norm;
 	
 	/* FIXME: Ref & Use */
-	mmview->priv->uid = uid;
+	mmview->priv->uid = g_strdup(uid);
 	mmview->priv->folder = folder;
 
 	box = gtk_vbox_new (FALSE, 0);
@@ -408,7 +430,7 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 	g_signal_connect (mmview->short_header, "button-press-event", G_CALLBACK(mmv_collapse_view), mmview);
 
 	info = camel_folder_get_message_info (folder, uid);
-	
+	mmview->priv->info = info;
 	header_row = gtk_hbox_new (FALSE, 0);
 	gtk_container_add (mmview->short_header, header_row);
 	gtk_widget_show (header_row);
@@ -544,7 +566,7 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 
 	/* Default: Body would be hidden */
 	mmview->body = gtk_vbox_new (FALSE, 0);
-	
+
 
 	//gtk_box_pack_start (header_row, mmview->priv->spinner, FALSE, FALSE, 0);
 	//gtk_widget_hide (mmview->priv->spinner);
@@ -593,7 +615,6 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 
 	if (!(info->flags & CAMEL_MESSAGE_SEEN))
 		 mmv_show(mmview);
-	camel_message_info_free(info);
 }
 
 void



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