]> git.0d.be Git - empathy.git/commitdiff
EmpathyChat: Remove messages from log messages which are pending.
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Fri, 6 Mar 2009 11:52:32 +0000 (11:52 +0000)
committerXavier Claessens <xclaesse@src.gnome.org>
Fri, 6 Mar 2009 11:52:32 +0000 (11:52 +0000)
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
svn path=/trunk/; revision=2600

libempathy-gtk/empathy-chat.c

index 34550965bb5f804b21475c099d9d1f67e1c23803..1e06ab2bacbe78256b2a3c832816e53870fddc30 100644 (file)
@@ -1031,9 +1031,10 @@ chat_add_logs (EmpathyChat *chat)
 {
        EmpathyChatPriv *priv = GET_PRIV (chat);
        gboolean         is_chatroom;
-       GList           *messages, *l;
+       GList           *messages, *l, *c;
        guint            num_messages;
        guint            i;
+       const GList     *pending_messages, *m;
 
        if (!priv->id) {
                return;
@@ -1048,6 +1049,27 @@ chat_add_logs (EmpathyChat *chat)
                                                          priv->account,
                                                          priv->id,
                                                          is_chatroom);
+
+       pending_messages = empathy_tp_chat_get_pending_messages (priv->tp_chat);
+
+       /* Remove messages that are pending */
+       c = g_list_copy (messages);
+       for (l = messages; l; l = l->next) {
+               for (m = pending_messages; m; m = m->next) {
+                       if (empathy_message_equal (l->data, m->data)) {
+                               EmpathyMessage *message;
+
+                               message = l->data;
+                               c = g_list_remove (c, message);
+                               g_object_unref (message);
+                               break;
+                       }
+               }
+       }
+
+       g_list_free (messages);
+       messages = c;
+
        num_messages  = g_list_length (messages);
 
        /* Only keep the 10 last messages */