diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-05-18 13:57:55 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-06-12 15:00:06 +0800 |
commit | 0569ded29dbab08462670e4780fb17ec5e4950ff (patch) | |
tree | 9f37091af6caa57e8eb9c25d98d35ab399be1702 | |
parent | 97efba6e5ce4eb5d85005281b2b8b0a95f8c0dd8 (diff) | |
download | gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar.gz gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar.bz2 gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar.lz gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar.xz gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.tar.zst gsoc2013-empathy-0569ded29dbab08462670e4780fb17ec5e4950ff.zip |
[theme-adium] wrap the messages in <span id=...> so we can find them again
This will enable our DOM manipulation
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 0370b9055..6c5ae7910 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -315,7 +315,8 @@ static EmpathyStringParser string_parsers_with_smiley[] = { static gchar * theme_adium_parse_body (EmpathyThemeAdium *self, - const gchar *text) + const gchar *text, + const gchar *token) { EmpathyThemeAdiumPriv *priv = GET_PRIV (self); EmpathyStringParser *parsers; @@ -332,8 +333,19 @@ theme_adium_parse_body (EmpathyThemeAdium *self, * by html tags. Also escape text to make sure html code is * displayed verbatim. */ string = g_string_sized_new (strlen (text)); + + /* wrap this in HTML that allows us to find the message for later + * editing */ + if (!tp_str_empty (token)) + g_string_append_printf (string, + "<span id=\"message-token-%s\">", + token); + empathy_string_parser_substr (text, -1, parsers, string); + if (!tp_str_empty (token)) + g_string_append (string, "</span>"); + /* Wrap body in order to make tabs and multiple spaces displayed * properly. See bug #625745. */ g_string_prepend (string, "<div style=\"display: inline; " @@ -817,7 +829,6 @@ theme_adium_append_message (EmpathyChatView *view, TpMessage *tp_msg; TpAccount *account; gchar *body_escaped; - const gchar *body; const gchar *name; const gchar *contact_id; EmpathyAvatar *avatar; @@ -846,8 +857,9 @@ theme_adium_append_message (EmpathyChatView *view, if (service_name == NULL) service_name = tp_account_get_protocol (account); timestamp = empathy_message_get_timestamp (msg); - body = empathy_message_get_body (msg); - body_escaped = theme_adium_parse_body (theme, body); + body_escaped = theme_adium_parse_body (theme, + empathy_message_get_body (msg), + empathy_message_get_token (msg)); name = empathy_contact_get_alias (sender); contact_id = empathy_contact_get_id (sender); action = (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION); |