aboutsummaryrefslogtreecommitdiffstats
path: root/libempathy-gtk
diff options
context:
space:
mode:
authorxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2007-08-13 18:50:49 +0800
committerxclaesse <xclaesse@4ee84921-47dd-4033-b63a-18d7a039a3e4>2007-08-13 18:50:49 +0800
commit5ed3a8fa102143c73500165f93730d645b56774a (patch)
treebaf5c8e262925b55d6058c11ec6792cc64e3f608 /libempathy-gtk
parent7ea1665687dba23be7083df96fe4d911e5d8174c (diff)
downloadgsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar.gz
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar.bz2
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar.lz
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar.xz
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.tar.zst
gsoc2013-empathy-5ed3a8fa102143c73500165f93730d645b56774a.zip
2007-08-13 Xavier Claessens <xclaesse@gmail.com>
* libempathy-gtk/empathy-group-chat.c: Only update the topic of it has really be changed, avoid diplaying many times "Topic set to:" message. * libempathy-gtk/empathy-chat.c: Some Jabber chatroom sends messages received before we joined the room, this avoid displaying those messages if we already logged them last time we joined that room. Previous workaround prevented Empathy to log offline messages. git-svn-id: svn+ssh://svn.gnome.org/svn/empathy/trunk@255 4ee84921-47dd-4033-b63a-18d7a039a3e4
Diffstat (limited to 'libempathy-gtk')
-rw-r--r--libempathy-gtk/empathy-chat.c35
-rw-r--r--libempathy-gtk/empathy-group-chat.c11
2 files changed, 27 insertions, 19 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index 304e8d447..9de1caa07 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -76,7 +76,7 @@ struct _EmpathyChatPriv {
GList *compositors;
guint scroll_idle_id;
gboolean first_tp_chat;
- EmpathyTime time_joined;
+ EmpathyTime last_log_timestamp;
/* Used to automatically shrink a window that has temporarily
* grown due to long input.
*/
@@ -406,18 +406,26 @@ chat_message_received_cb (EmpathyTpChat *tp_chat,
priv = GET_PRIV (chat);
+ timestamp = empathy_message_get_timestamp (message);
+ if (timestamp <= priv->last_log_timestamp) {
+ /* Do not take care of messages anterior of the last
+ * logged message. Some Jabber chatroom sends messages
+ * received before we joined the room, this avoid
+ * displaying those messages if we already logged them
+ * last time we joined that room. */
+ empathy_debug (DEBUG_DOMAIN, "Skipping message because it is "
+ "anterior of last logged message.");
+ return;
+ }
+
sender = empathy_message_get_sender (message);
empathy_debug (DEBUG_DOMAIN, "Appending message ('%s')",
empathy_contact_get_name (sender));
- /* Log the message only if it's not backlog */
- timestamp = empathy_message_get_timestamp (message);
- if (timestamp >= priv->time_joined) {
- empathy_log_manager_add_message (priv->log_manager,
- empathy_chat_get_id (chat),
- empathy_chat_is_group_chat (chat),
- message);
- }
+ empathy_log_manager_add_message (priv->log_manager,
+ empathy_chat_get_id (chat),
+ empathy_chat_is_group_chat (chat),
+ message);
empathy_chat_view_append_message (chat->view, message);
@@ -1137,11 +1145,6 @@ chat_add_logs (EmpathyChat *chat)
priv = GET_PRIV (chat);
- /* Do not display backlog for chatrooms */
- if (empathy_chat_is_group_chat (chat)) {
- return;
- }
-
/* Turn off scrolling temporarily */
empathy_chat_view_scroll (chat->view, FALSE);
@@ -1163,8 +1166,9 @@ chat_add_logs (EmpathyChat *chat)
continue;
}
-
+ priv->last_log_timestamp = empathy_message_get_timestamp (message);
empathy_chat_view_append_message (chat->view, message);
+
g_object_unref (message);
}
g_list_free (messages);
@@ -1360,7 +1364,6 @@ empathy_chat_set_tp_chat (EmpathyChat *chat,
g_free (priv->id);
priv->tp_chat = g_object_ref (tp_chat);
priv->id = g_strdup (empathy_tp_chat_get_id (tp_chat));
- priv->time_joined = empathy_time_get_current ();
if (priv->first_tp_chat) {
chat_add_logs (chat);
diff --git a/libempathy-gtk/empathy-group-chat.c b/libempathy-gtk/empathy-group-chat.c
index 4d62d51b6..ca046a3d7 100644
--- a/libempathy-gtk/empathy-group-chat.c
+++ b/libempathy-gtk/empathy-group-chat.c
@@ -560,13 +560,18 @@ group_chat_subject_notify_cb (EmpathyTpChat *tp_chat,
EmpathyGroupChat *chat)
{
EmpathyGroupChatPriv *priv;
- gchar *str;
+ gchar *str = NULL;
priv = GET_PRIV (chat);
- g_free (priv->topic);
+ g_object_get (priv->tp_chat, "subject", &str, NULL);
+ if (!empathy_strdiff (priv->topic, str)) {
+ g_free (str);
+ return;
+ }
- g_object_get (priv->tp_chat, "subject", &priv->topic, NULL);
+ g_free (priv->topic);
+ priv->topic = str;
gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->topic);
if (!G_STR_EMPTY (priv->topic)) {