From ce74b001af76af82c3bc448784ce7826b99d378f Mon Sep 17 00:00:00 2001 From: Davyd Madeley Date: Tue, 14 Jul 2009 11:47:47 +0100 Subject: Check CAN_ADD before returning an Add Contact... menu item --- libempathy-gtk/empathy-contact-menu.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'libempathy-gtk/empathy-contact-menu.c') diff --git a/libempathy-gtk/empathy-contact-menu.c b/libempathy-gtk/empathy-contact-menu.c index 3c4eb0bbf..b4d694b6a 100644 --- a/libempathy-gtk/empathy-contact-menu.c +++ b/libempathy-gtk/empathy-contact-menu.c @@ -146,12 +146,27 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact) GtkWidget *item; GtkWidget *image; EmpathyContactManager *manager; + TpConnection *connection; GList *l, *members; gboolean found = FALSE; + EmpathyContactListFlags flags; g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL); + if (!empathy_contact_manager_initialized ()) { + return NULL; + } + manager = empathy_contact_manager_dup_singleton (); + connection = empathy_contact_get_connection (contact); + + flags = empathy_contact_manager_get_flags_for_connection (manager, + connection); + + if (!(flags & EMPATHY_CONTACT_LIST_CAN_ADD)) { + return NULL; + } + members = empathy_contact_list_get_members (EMPATHY_CONTACT_LIST (manager)); for (l = members; l; l = l->next) { if (!found && empathy_contact_equal (l->data, contact)) { @@ -163,6 +178,7 @@ empathy_contact_add_menu_item_new (EmpathyContact *contact) g_object_unref (l->data); } g_list_free (members); + g_object_unref (manager); if (found) { return NULL; -- cgit v1.2.3