diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-05-20 13:25:58 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-06-14 00:04:03 +0800 |
commit | 878a1b3a5204e9713e9ce6203af14cb51c6f96af (patch) | |
tree | 88707249fdf99f4e477f5880bbe7dd30f965e770 /libempathy-gtk | |
parent | 7d48e0689c9c13bfeb7dbc21854a87dfc58a3005 (diff) | |
download | gsoc2013-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.c | 23 |
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); |