[anjal] Show inline composer on last message always.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Show inline composer on last message always.
- Date: Tue, 9 Jun 2009 03:24:23 -0400 (EDT)
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]