]> git.0d.be Git - empathy.git/commitdiff
Pass edited messages through to the ChatView
authorDanielle Madeley <danielle.madeley@collabora.co.uk>
Wed, 18 May 2011 05:56:40 +0000 (15:56 +1000)
committerDanielle Madeley <danielle.madeley@collabora.co.uk>
Sun, 12 Jun 2011 06:57:53 +0000 (07:57 +0100)
libempathy-gtk/empathy-chat.c

index 3c391c864d2d1a38f98e68d7c5197b824ce87e75..47f1e681521a6fa661c00a752c14851568f43b88 100644 (file)
@@ -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