[anjal] Show inline composer on last message always.



commit 6a2f512505986355d4a0f05be96381be4907cf26
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Tue Jun 9 12:54:23 2009 +0530

    Show inline composer on last message always.
    FIXME: fix scrolling now.
---
 src/mail-conv-view.c    |    4 ++--
 src/mail-message-view.c |   20 ++++++++++++++++++--
 src/mail-message-view.h |    2 +-
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/mail-conv-view.c b/src/mail-conv-view.c
index 55d9bbd..61e055c 100644
--- a/src/mail-conv-view.c
+++ b/src/mail-conv-view.c
@@ -352,7 +352,7 @@ mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *ar
 		gtk_box_pack_start ((GtkBox *)mcv->child_box, child, FALSE, FALSE, 4);
 		gtk_widget_show (child);
 		
-		mail_message_view_set_message ((MailMessageView *)child, folder, array->pdata[i]);
+		mail_message_view_set_message ((MailMessageView *)child, folder, array->pdata[i], i == (array->len -1));
 		g_signal_connect (child, "message-selected", G_CALLBACK(mcv_message_selected), mcv);
 		g_signal_connect (child, "message-removed", G_CALLBACK(mcv_message_removed), mcv);
 		g_signal_connect (child, "message-reply", G_CALLBACK(mcv_message_reply), mcv);
@@ -363,7 +363,7 @@ mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *ar
 				g_signal_connect (child, "message-loaded", G_CALLBACK(mcv_scroll_to_mmv), mcv);
 		}
 
-		if (!unread && i == array->len -1) {
+		if (i == array->len -1) {
 				unread = mail_message_view_get_focus_widget((MailMessageView *)child);
 				g_signal_connect (child, "message-loaded", G_CALLBACK(mcv_scroll_to_mmv), mcv);
 				mail_message_view_show_message ((MailMessageView *)child);
diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index d2c6bf4..9c1efad 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -73,6 +73,7 @@ struct  _MailMessageViewPrivate {
 	char *bold[2];
 	char *normal[2];
 	CamelOperation *cancel;
+	gboolean show_composer;
 };
 
 G_DEFINE_TYPE (MailMessageView, mail_message_view, GTK_TYPE_VBOX)
@@ -94,6 +95,7 @@ static const char *norm_color = "#d3d7cf";
 static const char *sel_color = "#729fcf";
 #endif
 static void unread_toggled (GtkWidget *w, GdkEventButton *event, MailMessageView *mmv);
+static void construct_reply_composer (MailMessageView *mmv, int mode);
 
 static void
 mail_message_view_init (MailMessageView  *shell)
@@ -104,6 +106,7 @@ mail_message_view_init (MailMessageView  *shell)
 	shell->type = MAIL_VIEW_MESSAGE;
 	shell->uri = "mail://";
 	shell->composer = NULL;
+	shell->priv->show_composer = FALSE;
 }
 
 static void
@@ -187,6 +190,11 @@ mmv_message_opened(CamelFolder *folder, const char *uid, CamelMimeMessage *msg,
 	gtk_widget_hide (shell->priv->spinner);
 	gdk_window_invalidate_rect (((GtkWidget *)shell)->window, NULL, TRUE);
 	gtk_widget_queue_draw ((GtkWidget *)shell);
+
+	if (shell->priv->show_composer) {
+		 construct_reply_composer (shell, REPLY_MODE_ALL);
+		 shell->priv->show_composer = FALSE;
+	}
 }
 
 static void
@@ -229,6 +237,11 @@ mmv_show (MailMessageView *mmv)
 	if (!mmv->priv->msg) {
 		gtk_widget_show(mmv->priv->spinner);
 		mmv->priv->cancel = mail_get_messagex(mmv->priv->folder, mmv->priv->uid, mmv_message_opened, mmv, mail_msg_fast_ordered_push);
+	} else {
+		 if (mmv->priv->show_composer) {
+			  construct_reply_composer (mmv, REPLY_MODE_ALL);
+			  mmv->priv->show_composer = FALSE;
+		 }
 	}
 	gtk_widget_show (mmv->body);
 	gtk_widget_show_all (mmv->footer);
@@ -271,6 +284,7 @@ mmv_collapse (MailMessageView *mmv)
 void
 mail_message_view_show_message (MailMessageView *mmv)
 {
+	mmv->priv->show_composer = TRUE;
 	mmv_show (mmv);
 }
 
@@ -999,7 +1013,7 @@ unread_leave(GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 }
 
 void
-mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, const char *uid)
+mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, const char *uid, gboolean show_composer)
 {
 	 GtkWidget *tmp,  *menu;
 	 GdkPixbuf *img;
@@ -1292,8 +1306,10 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
 	mmview->frame = gtk_frame_new (NULL);
 	gtk_frame_set_shadow_type ((GtkFrame *)mmview->frame, GTK_SHADOW_IN);
 
-	if (!(info->flags & CAMEL_MESSAGE_SEEN))
+	if (!(info->flags & CAMEL_MESSAGE_SEEN)) {
+		 mmview->priv->show_composer = show_composer;
 		 mmv_show(mmview);
+	}
 }
 
 void
diff --git a/src/mail-message-view.h b/src/mail-message-view.h
index 2e4ca14..47dd233 100644
--- a/src/mail-message-view.h
+++ b/src/mail-message-view.h
@@ -73,7 +73,7 @@ typedef struct _MailMessageViewClass {
 } MailMessageViewClass;
 
 MailMessageView * mail_message_view_new (void);
-void mail_message_view_set_message (MailMessageView *mmview, struct _CamelFolder *folder, const char *uid);
+void mail_message_view_set_message (MailMessageView *mmview, struct _CamelFolder *folder, const char *uid, gboolean show_composer);
 GtkWidget * mail_message_view_create_webview (MailMessageView *mmv, GtkWidget *box);
 CamelStream * mail_message_view_create_webstream (gpointer web, GtkWidget *w);
 GtkWidget * mail_message_view_get_focus_widget (MailMessageView *mmv);



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