*/
#include "config.h"
-
-#include <string.h>
+#include "empathy-individual-menu.h"
#include <glib/gi18n-lib.h>
-#include <gtk/gtk.h>
-
-#include <telepathy-glib/util.h>
-
-#include <folks/folks.h>
-#include <folks/folks-telepathy.h>
-
-#include <libempathy/empathy-camera-monitor.h>
-#include <libempathy/empathy-request-util.h>
-#include <libempathy/empathy-individual-manager.h>
-#include <libempathy/empathy-chatroom-manager.h>
-#include <libempathy/empathy-utils.h>
#include "empathy-account-selector-dialog.h"
-#include "empathy-individual-menu.h"
+#include "empathy-call-utils.h"
+#include "empathy-camera-monitor.h"
+#include "empathy-chatroom-manager.h"
+#include "empathy-gtk-enum-types.h"
#include "empathy-images.h"
-#include "empathy-log-window.h"
#include "empathy-individual-dialogs.h"
-#include "empathy-gtk-enum-types.h"
#include "empathy-individual-dialogs.h"
#include "empathy-individual-edit-dialog.h"
-#include "empathy-ui-utils.h"
-#include "empathy-share-my-desktop.h"
-#include "empathy-call-utils.h"
-#include "empathy-individual-store-channel.h"
#include "empathy-individual-information-dialog.h"
+#include "empathy-individual-manager.h"
+#include "empathy-individual-store-channel.h"
+#include "empathy-log-window.h"
+#include "empathy-request-util.h"
+#include "empathy-share-my-desktop.h"
+#include "empathy-ui-utils.h"
+#include "empathy-utils.h"
#define DEBUG_FLAG EMPATHY_DEBUG_CONTACT
-#include <libempathy/empathy-debug.h>
+#include "empathy-debug.h"
#define GET_PRIV(obj) EMPATHY_GET_PRIV (obj, EmpathyIndividualMenu)
GeeSet *personas;
GeeIterator *iter;
guint persona_count = 0;
- gboolean c;
g_return_if_fail (GTK_IS_MENU (menu));
g_return_if_fail (FOLKS_IS_INDIVIDUAL (individual));
/* return early if these entries would add nothing beyond the "quick" items */
if (persona_count <= 1)
- return;
+ goto out;
/* add a separator before the list of personas */
item = gtk_separator_menu_item_new ();
gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
gtk_widget_show (item);
- for (c = gee_iterator_first (iter); c; c = gee_iterator_next (iter))
+ iter = gee_iterable_iterator (GEE_ITERABLE (personas));
+ while (gee_iterator_next (iter))
{
GtkWidget *image;
GtkWidget *contact_item;
single_individual = empathy_create_individual_from_tp_contact (
tp_contact);
+ /* Pretty hacky. Creating single_individual had a side effect to change
+ * persona.individual from individual to single_individual which is not
+ * what we want so we set it back. See bgo#684971 for details. */
+ g_object_set (persona, "individual", individual, NULL);
+
store = folks_persona_get_store (FOLKS_PERSONA (persona));
account = folks_persona_store_get_display_name (store);
g_clear_object (&persona);
}
+out:
g_clear_object (&iter);
}
am = tp_account_manager_dup ();
g_return_val_if_fail (am != NULL, NULL);
- accounts = tp_account_manager_get_valid_accounts (am);
+ accounts = tp_account_manager_dup_valid_accounts (am);
for (l = accounts; l != NULL; l = g_list_next (l))
{
TpAccount *account = l->data;
found = g_list_prepend (found, g_object_ref (account));
}
- g_list_free (accounts);
+ g_list_free_full (accounts, g_object_unref);
g_object_unref (am);
return found;
gtk_menu_shell_append (GTK_MENU_SHELL (self), item);
gtk_widget_show (item);
}
+
+ g_object_unref (iter);
}
/* return a list of TpContact supporting the blocking iface */