aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2011-05-20 13:25:58 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-06-14 00:04:03 +0800
commit878a1b3a5204e9713e9ce6203af14cb51c6f96af (patch)
tree88707249fdf99f4e477f5880bbe7dd30f965e770 /libempathy-gtk
parent7d48e0689c9c13bfeb7dbc21854a87dfc58a3005 (diff)
downloadgsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar.gz
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar.bz2
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar.lz
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar.xz
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.tar.zst
gsoc2013-empathy-878a1b3a5204e9713e9ce6203af14cb51c6f96af.zip
Get the original message from the logger so we can supersede it
Strictly, we don't need to do this, we could just use the supersedes-token as the message-token and we'd still be able to edit the messages in the future, but this way we get the nice pretty annotation saying that we edited it and when.
Diffstat (limited to 'libempathy-gtk')
-rw-r--r--libempathy-gtk/empathy-chat.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 47f1e6815..85a0b7793 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -38,6 +38,7 @@
#include <telepathy-glib/account-manager.h>
#include <telepathy-glib/util.h>
#include <telepathy-logger/log-manager.h>
+#include <telepathy-logger/text-event.h>
#include <libempathy/empathy-contact-list.h>
#include <libempathy/empathy-gsettings.h>
#include <libempathy/empathy-keyring.h>
@@ -2331,12 +2332,32 @@ got_filtered_messages_cb (GObject *manager,
for (l = messages; l; l = g_list_next (l)) {
EmpathyMessage *message;
+ GList *supersedes;
g_assert (TPL_IS_EVENT (l->data));
+ /* we need the last message this one supersedes, which is the
+ * the original */
+ supersedes = tpl_text_event_dup_supersedes (l->data);
+
+ if (supersedes != NULL) {
+ message = empathy_message_from_tpl_log_event (
+ g_list_last (supersedes)->data);
+ empathy_chat_view_append_message (chat->view, message);
+
+ g_object_unref (message);
+ }
+
+ g_list_free_full (supersedes, g_object_unref);
+
+ /* append the latest message */
message = empathy_message_from_tpl_log_event (l->data);
g_object_unref (l->data);
- empathy_chat_view_append_message (chat->view, message);
+ if (empathy_message_is_edit (message))
+ empathy_chat_view_edit_message (chat->view, message);
+ else
+ empathy_chat_view_append_message (chat->view, message);
+
g_object_unref (message);
}
g_list_free (messages);