+
+ if (tp_strdiff (group, NO_GROUP) &&
+ tp_strdiff (group, EMPATHY_ROSTER_MODEL_GROUP_UNGROUPED) &&
+ g_hash_table_size (contacts) == 2 /* 1:Ungrouped and 2:first group */)
+ {
+ remove_from_group (self, individual,
+ EMPATHY_ROSTER_MODEL_GROUP_UNGROUPED);
+ }
+}
+
+static void
+individual_favourite_change_cb (FolksIndividual *individual,
+ GParamSpec *spec,
+ EmpathyRosterView *self)
+{
+ /* We may have to refilter the contact as only favorite contacts are always
+ * displayed regardless of their presence. */
+ GHashTable *contacts;
+ GtkWidget *contact;
+
+ contacts = g_hash_table_lookup (self->priv->roster_contacts, individual);
+ if (contacts == NULL)
+ return;
+
+ if (self->priv->show_groups)
+ contact = g_hash_table_lookup (contacts,
+ EMPATHY_ROSTER_MODEL_GROUP_TOP_GROUP);
+ else
+ contact = g_hash_table_lookup (contacts, NO_GROUP);
+
+ if (contact == NULL)
+ return;
+
+ gtk_list_box_row_changed (GTK_LIST_BOX_ROW (contact));