aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Le Thanh Duong <olivier@lethanh.be>2009-09-21 00:42:20 +0800
committerOlivier Le Thanh Duong <olivier@lethanh.be>2009-09-21 00:42:20 +0800
commit1ca52da13f25b623adb55127aee61c6ea2f68bea (patch)
treeb6f199ca0e88308eacdb220bbb0a21c84c52e377
parent92d9677c07a4591869cab86b27e21676221cf614 (diff)
downloadgsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar.gz
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar.bz2
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar.lz
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar.xz
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.tar.zst
gsoc2013-empathy-1ca52da13f25b623adb55127aee61c6ea2f68bea.zip
Fallback to the contact id if present when there is no room id for empathy_tp_chat
-rw-r--r--libempathy-gtk/empathy-chat.c7
-rw-r--r--libempathy/empathy-tp-chat.c11
-rw-r--r--src/empathy.c11
3 files changed, 14 insertions, 15 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c
index c08b49c3f..ea6b40ef6 100644
--- a/libempathy-gtk/empathy-chat.c
+++ b/libempathy-gtk/empathy-chat.c
@@ -1325,20 +1325,19 @@ chat_remote_contact_changed_cb (EmpathyChat *chat)
priv->remote_contact = NULL;
}
+ g_free (priv->id);
+
+ priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
priv->remote_contact = empathy_tp_chat_get_remote_contact (priv->tp_chat);
if (priv->remote_contact != NULL) {
g_object_ref (priv->remote_contact);
priv->handle_type = TP_HANDLE_TYPE_CONTACT;
- g_free (priv->id);
- priv->id = g_strdup (empathy_contact_get_id (priv->remote_contact));
}
else if (priv->tp_chat != NULL) {
TpChannel *channel;
channel = empathy_tp_chat_get_channel (priv->tp_chat);
g_object_get (channel, "handle-type", &priv->handle_type, NULL);
- g_free (priv->id);
- priv->id = g_strdup (empathy_tp_chat_get_id (priv->tp_chat));
}
chat_update_contacts_visibility (chat);
diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c
index a8b0eeb6f..28b97076d 100644
--- a/libempathy/empathy-tp-chat.c
+++ b/libempathy/empathy-tp-chat.c
@@ -1251,10 +1251,19 @@ const gchar *
empathy_tp_chat_get_id (EmpathyTpChat *chat)
{
EmpathyTpChatPriv *priv = GET_PRIV (chat);
+ const gchar *id;
+
g_return_val_if_fail (EMPATHY_IS_TP_CHAT (chat), NULL);
- return tp_channel_get_identifier (priv->channel);
+ id = tp_channel_get_identifier (priv->channel);
+ if (!EMP_STR_EMPTY (id))
+ return id;
+ else if (priv->remote_contact)
+ return empathy_contact_get_id (priv->remote_contact);
+ else
+ return NULL;
+
}
EmpathyContact *
diff --git a/src/empathy.c b/src/empathy.c
index 8a2f107b7..d1c44da03 100644
--- a/src/empathy.c
+++ b/src/empathy.c
@@ -100,16 +100,7 @@ dispatch_cb (EmpathyDispatcher *dispatcher,
(empathy_dispatch_operation_get_channel_wrapper (operation));
id = empathy_tp_chat_get_id (tp_chat);
- if (!id)
- {
- EmpathyContact *contact;
-
- contact = empathy_tp_chat_get_remote_contact (tp_chat);
- if (contact)
- id = empathy_contact_get_id (contact);
- }
-
- if (id)
+ if (!EMP_STR_EMPTY (id))
{
EmpathyAccountManager *manager;
TpConnection *connection;