]> git.0d.be Git - empathy.git/commitdiff
Limit joining consecutive messages to 5 minutes
authorPatryk Zawadzki <patrys@pld-linux.org>
Fri, 19 Jun 2009 09:49:32 +0000 (11:49 +0200)
committerPatryk Zawadzki <patrys@pld-linux.org>
Fri, 19 Jun 2009 09:49:32 +0000 (11:49 +0200)
Fixes bug #586352

libempathy-gtk/empathy-theme-adium.c

index 321d1998cf7285ff57aa6492e7c804719396002c..edbdbcd042635da6ecf7eff63fc9309a7917ffa6 100644 (file)
 
 #define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyThemeAdium)
 
+/* "Join" consecutive messages with timestamps within five minutes */
+#define MESSAGE_JOIN_PERIOD 5*60
+
 typedef struct {
        EmpathySmileyManager *smiley_manager;
        EmpathyContact       *last_contact;
+       time_t                last_timestamp;
        gboolean              page_loaded;
        GList                *message_queue;
        gchar                *path;
@@ -501,7 +505,12 @@ theme_adium_append_message (EmpathyChatView *view,
 
        /* Get the right html/func to add the message */
        func = "appendMessage";
-       if (empathy_contact_equal (priv->last_contact, sender)) {
+       /*
+        * To mimick Adium's behavior, we only want to join messages
+        * sent within a 5 minute time frame.
+        */
+       if (empathy_contact_equal (priv->last_contact, sender) &&
+           (timestamp - priv->last_timestamp < MESSAGE_JOIN_PERIOD)) {
                func = "appendNextMessage";
                if (empathy_contact_is_user (sender)) {
                        html = priv->out_nextcontent_html;
@@ -531,6 +540,7 @@ theme_adium_append_message (EmpathyChatView *view,
                g_object_unref (priv->last_contact);
        }
        priv->last_contact = g_object_ref (sender);
+       priv->last_timestamp = timestamp;
 
        g_free (dup_body);
 }