aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/empathy-chat-manager.c30
1 files changed, 20 insertions, 10 deletions
diff --git a/src/empathy-chat-manager.c b/src/empathy-chat-manager.c
index 0e8a335c2..3c66e36e5 100644
--- a/src/empathy-chat-manager.c
+++ b/src/empathy-chat-manager.c
@@ -95,6 +95,24 @@ chat_data_free (ChatData *data)
}
static void
+tell_chatroom_manager_if_needed (TpAccount *account,
+ EmpathyTpChat *chat)
+{
+ TpHandleType type;
+
+ tp_channel_get_handle (empathy_tp_chat_get_channel (chat), &type);
+
+ if (type == TP_HANDLE_TYPE_ROOM)
+ {
+ EmpathyChatroomManager *chatroom_mgr;
+
+ chatroom_mgr = empathy_chatroom_manager_dup_singleton (NULL);
+ empathy_chatroom_manager_chat_handled (chatroom_mgr, chat, account);
+ g_object_unref (chatroom_mgr);
+ }
+}
+
+static void
process_tp_chat (EmpathyTpChat *tp_chat,
TpAccount *account,
gint64 user_action_time)
@@ -102,6 +120,8 @@ process_tp_chat (EmpathyTpChat *tp_chat,
EmpathyChat *chat = NULL;
const gchar *id;
+ tell_chatroom_manager_if_needed (account, tp_chat);
+
id = empathy_tp_chat_get_id (tp_chat);
if (!tp_str_empty (id))
{
@@ -119,7 +139,6 @@ process_tp_chat (EmpathyTpChat *tp_chat,
* a GtkWidget. This reference will be taken by a container
* (a GtkNotebook) when we'll call empathy_chat_window_present_chat */
}
-
empathy_chat_window_present_chat (chat, user_action_time);
if (empathy_tp_chat_is_invited (tp_chat, NULL))
@@ -129,15 +148,6 @@ process_tp_chat (EmpathyTpChat *tp_chat,
empathy_tp_chat_join (tp_chat);
}
- if (empathy_chat_is_room (chat))
- {
- EmpathyChatroomManager *chatroom_mgr;
-
- chatroom_mgr = empathy_chatroom_manager_dup_singleton (NULL);
- empathy_chatroom_manager_chat_handled (chatroom_mgr, tp_chat, account);
- g_object_unref (chatroom_mgr);
- }
-
g_object_unref (tp_chat);
}