[empathy: 4/19] Pass edited messages through to the ChatView



commit 97efba6e5ce4eb5d85005281b2b8b0a95f8c0dd8
Author: Danielle Madeley <danielle madeley collabora co uk>
Date:   Wed May 18 15:56:40 2011 +1000

    Pass edited messages through to the ChatView

 libempathy-gtk/empathy-chat.c |   43 ++++++++++++++++++++++++++--------------
 1 files changed, 28 insertions(+), 15 deletions(-)
---
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 3c391c8..47f1e68 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -1332,27 +1332,40 @@ chat_message_received (EmpathyChat *chat,
 	gboolean pending)
 {
 	EmpathyChatPriv *priv = GET_PRIV (chat);
-	EmpathyContact  *sender;
 
-	sender = empathy_message_get_sender (message);
+	if (empathy_message_is_edit (message)) {
+		DEBUG ("Editing message '%s' to '%s'",
+			empathy_message_get_supersedes (message),
+			empathy_message_get_body (message));
 
-	DEBUG ("Appending new message from %s (%d)",
-		empathy_contact_get_alias (sender),
-		empathy_contact_get_handle (sender));
+		empathy_chat_view_edit_message (chat->view, message);
 
-	empathy_chat_view_append_message (chat->view, message);
+		/* FIXME: do we need to do things like edit the chat state? */
+	} else {
+		EmpathyContact  *sender;
 
-	/* We received a message so the contact is no longer composing */
-	chat_state_changed_cb (priv->tp_chat, sender,
-			       TP_CHANNEL_CHAT_STATE_ACTIVE,
-			       chat);
+		sender = empathy_message_get_sender (message);
 
-	if (empathy_message_is_incoming (message)) {
-		priv->unread_messages++;
-		g_object_notify (G_OBJECT (chat), "nb-unread-messages");
-	}
+		DEBUG ("Appending new message '%s' from %s (%d)",
+			empathy_message_get_token (message),
+			empathy_contact_get_alias (sender),
+			empathy_contact_get_handle (sender));
+
+		empathy_chat_view_append_message (chat->view, message);
 
-	g_signal_emit (chat, signals[NEW_MESSAGE], 0, message, pending);
+		/* We received a message so the contact is no longer
+		 * composing */
+		chat_state_changed_cb (priv->tp_chat, sender,
+				       TP_CHANNEL_CHAT_STATE_ACTIVE,
+				       chat);
+
+		if (empathy_message_is_incoming (message)) {
+			priv->unread_messages++;
+			g_object_notify (G_OBJECT (chat), "nb-unread-messages");
+		}
+
+		g_signal_emit (chat, signals[NEW_MESSAGE], 0, message, pending);
+	}
 }
 
 static void



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