]> git.0d.be Git - empathy.git/commitdiff
Adium: Correctly support action messages (/me)
authorXavier Claessens <xclaesse@gmail.com>
Wed, 4 May 2011 12:30:02 +0000 (14:30 +0200)
committerXavier Claessens <xclaesse@gmail.com>
Wed, 4 May 2011 12:30:56 +0000 (14:30 +0200)
Fixes bug #649367

libempathy-gtk/empathy-theme-adium.c

index f7f37206f3f6b4b01c595f8eb7fdb70b27012259..e6cf03c86cb983a45ae862fc11d197dcca783a20 100644 (file)
@@ -667,6 +667,7 @@ theme_adium_append_message (EmpathyChatView *view,
        GString               *message_classes = NULL;
        gboolean               is_backlog;
        gboolean               consecutive;
+       gboolean               action;
 
        if (priv->pages_loading != 0) {
                GValue *value = tp_g_value_slice_new (EMPATHY_TYPE_MESSAGE);
@@ -687,17 +688,21 @@ theme_adium_append_message (EmpathyChatView *view,
        body_escaped = theme_adium_parse_body (theme, body);
        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);
 
-       /* If this is a /me, append an event */
-       if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_ACTION) {
+       /* If this is a /me probably */
+       if (action) {
                gchar *str;
 
-               str = g_strdup_printf ("%s %s", name, body_escaped);
-               theme_adium_append_event_escaped (view, str);
-
-               g_free (str);
+               if (priv->data->version >= 4 || !priv->data->custom_template) {
+                       str = g_strdup_printf ("<span class='actionMessageUserName'>%s</span>"
+                                              "<span class='actionMessageBody'>%s</span>",
+                                              name, body_escaped);
+               } else {
+                       str = g_strdup_printf ("*%s*", body_escaped);
+               }
                g_free (body_escaped);
-               return;
+               body_escaped = str;
        }
 
        /* Get the avatar filename, or a fallback */
@@ -763,6 +768,9 @@ theme_adium_append_message (EmpathyChatView *view,
        if (empathy_message_get_tptype (msg) == TP_CHANNEL_TEXT_MESSAGE_TYPE_AUTO_REPLY) {
                g_string_append (message_classes, " autoreply");
        }
+       if (action) {
+               g_string_append (message_classes, " action");
+       }
        /* FIXME: other classes:
         * status - the message is a status change
         * event - the message is a notification of something happening