--- a/finch/gntblist.c Wed Sep 21 03:27:36 2022 -0500
+++ b/finch/gntblist.c Thu Sep 22 20:25:37 2022 -0500
@@ -105,7 +105,7 @@
static FinchBuddyList *ggblist;
static void add_buddy(PurpleBuddy *buddy, FinchBuddyList *ggblist);
-static void add_contact(PurpleContact *contact, FinchBuddyList *ggblist);
+static void add_contact(PurpleMetaContact *contact, FinchBuddyList *ggblist); static void add_group(PurpleGroup *group, FinchBuddyList *ggblist);
static void add_chat(PurpleChat *chat, FinchBuddyList *ggblist);
static void add_node(PurpleBlistNode *node, FinchBuddyList *ggblist);
@@ -161,7 +161,7 @@
return TRUE; /* Show if the buddy just signed off */
if (purple_blist_node_get_bool(node, "show_offline"))
- } else if (PURPLE_IS_CONTACT(node)) {
+ } else if (PURPLE_IS_META_CONTACT(node)) { for (child = purple_blist_node_get_first_child(node);
child; child = purple_blist_node_get_sibling_next(child)) {
@@ -197,7 +197,7 @@
- if (PURPLE_IS_BUDDY(node) || PURPLE_IS_CONTACT(node) || PURPLE_IS_CHAT(node))
+ if (PURPLE_IS_BUDDY(node) || PURPLE_IS_META_CONTACT(node) || PURPLE_IS_CHAT(node)) ret = purple_blist_node_get_parent(node);
@@ -215,8 +215,8 @@
- if (PURPLE_IS_CONTACT(node)) {
- PurpleBuddy *pr = purple_contact_get_priority_buddy((PurpleContact*)node);
+ if (PURPLE_IS_META_CONTACT(node)) { + PurpleBuddy *pr = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); gboolean offline = !PURPLE_BUDDY_IS_ONLINE(pr);
gboolean showoffline = purple_prefs_get_bool(PREF_ROOT "/showoffline");
const char *name = purple_buddy_get_name(pr);
@@ -329,8 +329,8 @@
- if (PURPLE_IS_CONTACT(node))
- node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
+ if (PURPLE_IS_META_CONTACT(node)) + node = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node))); if (!PURPLE_IS_BUDDY(node))
@@ -360,8 +360,8 @@
if (fnode && fnode->signed_timer)
flag |= GNT_TEXT_FLAG_BLINK;
- else if (PURPLE_IS_CONTACT(node)) {
- node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
+ else if (PURPLE_IS_META_CONTACT(node)) { + node = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node))); fnode = g_object_get_data(G_OBJECT(node), UI_DATA);
if (fnode && fnode->signed_timer)
flag |= GNT_TEXT_FLAG_BLINK;
@@ -396,8 +396,8 @@
if(PURPLE_IS_BUDDY(node)) {
add_buddy((PurpleBuddy*)node, ggblist);
- } else if (PURPLE_IS_CONTACT(node)) {
- add_contact((PurpleContact*)node, ggblist);
+ } else if (PURPLE_IS_META_CONTACT(node)) { + add_contact((PurpleMetaContact*)node, ggblist); } else if (PURPLE_IS_GROUP(node)) {
add_group((PurpleGroup*)node, ggblist);
} else if (PURPLE_IS_CHAT(node)) {
@@ -486,7 +486,7 @@
node_update(list, purple_blist_node_get_parent(node));
} else if (PURPLE_IS_CHAT(node)) {
add_node(node, FINCH_BUDDY_LIST(list));
- } else if (PURPLE_IS_CONTACT(node)) {
+ } else if (PURPLE_IS_META_CONTACT(node)) { if (g_object_get_data(G_OBJECT(node), UI_DATA) == NULL) {
/* The core seems to expect the UI to add the buddies. */
for (node = purple_blist_node_get_first_child(node); node; node = purple_blist_node_get_sibling_next(node))
@@ -787,8 +787,8 @@
- if (PURPLE_IS_CONTACT(node))
- node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))); /* XXX: this can return NULL?! */
+ if (PURPLE_IS_META_CONTACT(node)) + node = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node))); /* XXX: this can return NULL?! */ @@ -858,7 +858,7 @@
-add_contact(PurpleContact *contact, FinchBuddyList *ggblist)
+add_contact(PurpleMetaContact *contact, FinchBuddyList *ggblist) PurpleBlistNode *node = (PurpleBlistNode*)contact;
@@ -886,7 +886,7 @@
PurpleBlistNode *node = (PurpleBlistNode *)buddy;
- PurpleContact *contact;
+ PurpleMetaContact *contact; if(g_object_get_data(G_OBJECT(node), UI_DATA)) {
@@ -900,7 +900,7 @@
blist_update_row_flags(ggblist, (PurpleBlistNode *)buddy);
- if (buddy == purple_contact_get_priority_buddy(contact)) {
+ if (buddy == purple_meta_contact_get_priority_buddy(contact)) { blist_update_row_flags(ggblist, (PurpleBlistNode *)contact);
@@ -914,8 +914,8 @@
- if (PURPLE_IS_CONTACT(node))
- node = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
+ if (PURPLE_IS_META_CONTACT(node)) + node = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node))); if (PURPLE_IS_BUDDY(node))
@@ -1210,7 +1210,7 @@
/* Xerox'd from gtkdialogs.c:purple_gtkdialogs_remove_contact_cb */
-remove_contact(PurpleContact *contact)
+remove_contact(PurpleMetaContact *contact) PurpleBlistNode *bnode, *cnode;
@@ -1233,10 +1233,10 @@
- if (PURPLE_IS_CONTACT(node)) {
- PurpleContact *contact = (PurpleContact*)node;
- PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
- purple_contact_set_alias(contact, name);
+ if (PURPLE_IS_META_CONTACT(node)) { + PurpleMetaContact *contact = (PurpleMetaContact*)node; + PurpleBuddy *buddy = purple_meta_contact_get_priority_buddy(contact); + purple_meta_contact_set_alias(contact, name); purple_buddy_set_local_alias(buddy, name);
purple_serv_alias_buddy(buddy);
} else if (PURPLE_IS_BUDDY(node)) {
@@ -1257,8 +1257,8 @@
- if (PURPLE_IS_CONTACT(node))
- name = purple_contact_get_alias((PurpleContact*)node);
+ if (PURPLE_IS_META_CONTACT(node)) + name = purple_meta_contact_get_alias((PurpleMetaContact*)node); else if (PURPLE_IS_BUDDY(node))
name = purple_buddy_get_contact_alias((PurpleBuddy*)node);
else if (PURPLE_IS_CHAT(node))
@@ -1288,7 +1288,7 @@
cnode = purple_blist_node_get_first_child(((PurpleBlistNode*)group));
- if (PURPLE_IS_CONTACT(cnode)) {
+ if (PURPLE_IS_META_CONTACT(cnode)) { bnode = purple_blist_node_get_first_child(cnode);
cnode = purple_blist_node_get_sibling_next(cnode);
@@ -1322,8 +1322,8 @@
finch_blist_remove_node(PurpleBlistNode *node)
- if (PURPLE_IS_CONTACT(node)) {
- remove_contact((PurpleContact*)node);
+ if (PURPLE_IS_META_CONTACT(node)) { + remove_contact((PurpleMetaContact*)node); } else if (PURPLE_IS_BUDDY(node)) {
PurpleBuddy *buddy = (PurpleBuddy*)node;
PurpleGroup *group = purple_buddy_get_group(buddy);
@@ -1343,9 +1343,9 @@
const char *name, *sec = NULL;
- if (PURPLE_IS_CONTACT(node)) {
- PurpleContact *c = (PurpleContact*)node;
- name = purple_contact_get_alias(c);
+ if (PURPLE_IS_META_CONTACT(node)) { + PurpleMetaContact *c = (PurpleMetaContact*)node; + name = purple_meta_contact_get_alias(c); if (purple_counting_node_get_total_size(PURPLE_COUNTING_NODE(c)) > 1)
sec = _("Removing this contact will also remove all the buddies in the contact");
} else if (PURPLE_IS_BUDDY(node)) {
@@ -1384,8 +1384,8 @@
ggblist->tagged = g_list_prepend(ggblist->tagged, node);
- if (PURPLE_IS_CONTACT(node))
- update_buddy_display(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)), ggblist);
+ if (PURPLE_IS_META_CONTACT(node)) + update_buddy_display(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node)), ggblist); else if (PURPLE_IS_BUDDY(node))
update_buddy_display((PurpleBuddy*)node, ggblist);
@@ -1396,15 +1396,15 @@
finch_blist_place_tagged(PurpleBlistNode *target)
- PurpleContact *tc = NULL;
+ PurpleMetaContact *tc = NULL; if (PURPLE_IS_GROUP(target))
tg = (PurpleGroup*)target;
else if (PURPLE_IS_BUDDY(target)) {
- tc = (PurpleContact*)purple_blist_node_get_parent(target);
+ tc = (PurpleMetaContact*)purple_blist_node_get_parent(target); tg = (PurpleGroup*)purple_blist_node_get_parent((PurpleBlistNode*)tc);
- } else if (PURPLE_IS_CONTACT(target)) {
- tc = (PurpleContact *)target;
+ } else if (PURPLE_IS_META_CONTACT(target)) { + tc = (PurpleMetaContact *)target; tg = (PurpleGroup *)purple_blist_node_get_parent(target);
} else if (PURPLE_IS_CHAT(target)) {
tg = (PurpleGroup*)purple_blist_node_get_parent(target);
@@ -1423,24 +1423,24 @@
update_node_display(node, ggblist);
/* Add the group after the current group */
purple_blist_add_group((PurpleGroup*)node, (PurpleBlistNode*)tg);
- } else if (PURPLE_IS_CONTACT(node)) {
- update_buddy_display(purple_contact_get_priority_buddy((PurpleContact*)node), ggblist);
+ } else if (PURPLE_IS_META_CONTACT(node)) { + update_buddy_display(purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node), ggblist); if (PURPLE_BLIST_NODE(tg) == target) {
/* The target is a group, just add the contact to the group. */
- purple_blist_add_contact((PurpleContact*)node, tg, NULL);
+ purple_blist_add_contact((PurpleMetaContact*)node, tg, NULL); /* The target is either a buddy, or a contact. Merge with that contact. */
- purple_contact_merge((PurpleContact*)node, (PurpleBlistNode*)tc);
+ purple_meta_contact_merge((PurpleMetaContact*)node, (PurpleBlistNode*)tc); /* The target is a chat. Add the contact to the group after this chat. */
- purple_blist_add_contact((PurpleContact*)node, NULL, target);
+ purple_blist_add_contact((PurpleMetaContact*)node, NULL, target); } else if (PURPLE_IS_BUDDY(node)) {
update_buddy_display((PurpleBuddy*)node, ggblist);
if (PURPLE_BLIST_NODE(tg) == target) {
/* The target is a group. Add this buddy in a new contact under this group. */
purple_blist_add_buddy((PurpleBuddy*)node, NULL, tg, NULL);
- } else if (PURPLE_IS_CONTACT(target)) {
+ } else if (PURPLE_IS_META_CONTACT(target)) { /* Add to the contact. */
purple_blist_add_buddy((PurpleBuddy*)node, tc, NULL, NULL);
} else if (PURPLE_IS_BUDDY(target)) {
@@ -1482,7 +1482,7 @@
tree = GNT_TREE(ggblist->tree);
node = gnt_tree_get_selection_data(tree);
- if (node && !(PURPLE_IS_BUDDY(node) || PURPLE_IS_CONTACT(node) ||
+ if (node && !(PURPLE_IS_BUDDY(node) || PURPLE_IS_META_CONTACT(node) || PURPLE_IS_GROUP(node) || PURPLE_IS_CHAT(node)))
@@ -1498,10 +1498,10 @@
create_group_menu(GNT_MENU(context), NULL);
title = g_strdup(_("Buddy List"));
- } else if (PURPLE_IS_CONTACT(node)) {
- ggblist->cnode = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(node)));
+ } else if (PURPLE_IS_META_CONTACT(node)) { + ggblist->cnode = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node))); create_buddy_menu(GNT_MENU(context), (PurpleBuddy*)ggblist->cnode);
- title = g_strdup(purple_contact_get_alias((PurpleContact*)node));
+ title = g_strdup(purple_meta_contact_get_alias((PurpleMetaContact*)node)); } else if (PURPLE_IS_BUDDY(node)) {
PurpleBuddy *buddy = (PurpleBuddy *)node;
create_buddy_menu(GNT_MENU(context), buddy);
@@ -1526,13 +1526,13 @@
add_custom_action(GNT_MENU(context), _("Remove"),
G_CALLBACK(finch_blist_remove_node_cb), node);
- if (ggblist->tagged && (PURPLE_IS_CONTACT(node)
+ if (ggblist->tagged && (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_GROUP(node))) {
add_custom_action(GNT_MENU(context), _("Place tagged"),
G_CALLBACK(finch_blist_place_tagged), node);
- if (PURPLE_IS_BUDDY(node) || PURPLE_IS_CONTACT(node)) {
+ if (PURPLE_IS_BUDDY(node) || PURPLE_IS_META_CONTACT(node)) { add_custom_action(GNT_MENU(context), _("Toggle Tag"),
G_CALLBACK(finch_blist_toggle_tag_buddy), node);
@@ -1753,7 +1753,7 @@
update_buddy_display(PurpleBuddy *buddy, FinchBuddyList *ggblist)
- PurpleContact *contact;
+ PurpleMetaContact *contact; contact = purple_buddy_get_contact(buddy);
@@ -1761,7 +1761,7 @@
gnt_tree_change_text(GNT_TREE(ggblist->tree), contact, 0, get_display_name((PurpleBlistNode*)contact));
blist_update_row_flags(ggblist, (PurpleBlistNode *)buddy);
- if (buddy == purple_contact_get_priority_buddy(contact))
+ if (buddy == purple_meta_contact_get_priority_buddy(contact)) blist_update_row_flags(ggblist, (PurpleBlistNode *)contact);
if (ggblist->tnode == (PurpleBlistNode *)buddy) {
@@ -2179,9 +2179,9 @@
return purple_buddy_presence_compare(
PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(PURPLE_BUDDY(n1))),
PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(PURPLE_BUDDY(n2))));
- } else if (PURPLE_IS_CONTACT(n1)) {
- s1 = purple_contact_get_alias((PurpleContact*)n1);
- s2 = purple_contact_get_alias((PurpleContact*)n2);
+ } else if (PURPLE_IS_META_CONTACT(n1)) { + s1 = purple_meta_contact_get_alias((PurpleMetaContact*)n1); + s2 = purple_meta_contact_get_alias((PurpleMetaContact*)n2); return blist_node_compare_position(n1, n2);
@@ -2203,10 +2203,10 @@
if (G_OBJECT_TYPE(n1) != G_OBJECT_TYPE(n2))
return blist_node_compare_position(n1, n2);
- if (PURPLE_IS_CONTACT(n1))
- n1 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n1)));
- if (PURPLE_IS_CONTACT(n2))
- n2 = PURPLE_BLIST_NODE(purple_contact_get_priority_buddy(PURPLE_CONTACT(n2)));
+ if (PURPLE_IS_META_CONTACT(n1)) + n1 = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(n1))); + if (PURPLE_IS_META_CONTACT(n2)) + n2 = PURPLE_BLIST_NODE(purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(n2))); if (PURPLE_IS_BUDDY(n1) && PURPLE_IS_BUDDY(n2)) {
ret = purple_buddy_presence_compare(
@@ -2313,7 +2313,7 @@
node_remove(purple_blist_get_default(), node);
update_node_display(node, ggblist);
- if (purple_blist_node_get_parent(node) && PURPLE_IS_CONTACT(purple_blist_node_get_parent(node)))
+ if (purple_blist_node_get_parent(node) && PURPLE_IS_META_CONTACT(purple_blist_node_get_parent(node))) update_node_display(purple_blist_node_get_parent(node), ggblist);
@@ -2337,7 +2337,7 @@
fnode->signed_timer = g_timeout_add_seconds(6, (GSourceFunc)buddy_recent_signed_on_off, data);
update_node_display(node, ggblist);
- if (purple_blist_node_get_parent(node) && PURPLE_IS_CONTACT(purple_blist_node_get_parent(node)))
+ if (purple_blist_node_get_parent(node) && PURPLE_IS_META_CONTACT(purple_blist_node_get_parent(node))) update_node_display(purple_blist_node_get_parent(node), ggblist);
--- a/libpurple/buddylist.c Wed Sep 21 03:27:36 2022 -0500
+++ b/libpurple/buddylist.c Thu Sep 22 20:25:37 2022 -0500
@@ -232,7 +232,7 @@
-contact_to_xmlnode(PurpleContact *contact)
+contact_to_xmlnode(PurpleMetaContact *contact) PurpleXmlNode *node, *child;
@@ -316,9 +316,9 @@
if (purple_blist_node_is_transient(cnode))
- if (PURPLE_IS_CONTACT(cnode))
+ if (PURPLE_IS_META_CONTACT(cnode)) - child = contact_to_xmlnode(PURPLE_CONTACT(cnode));
+ child = contact_to_xmlnode(PURPLE_META_CONTACT(cnode)); purple_xmlnode_insert_child(node, child);
else if (PURPLE_IS_CHAT(cnode))
@@ -498,7 +498,7 @@
-parse_buddy(PurpleGroup *group, PurpleContact *contact, PurpleXmlNode *bnode) {
+parse_buddy(PurpleGroup *group, PurpleMetaContact *contact, PurpleXmlNode *bnode) { PurpleAccountManager *manager = purple_account_manager_get_default();
@@ -546,7 +546,7 @@
parse_contact(PurpleGroup *group, PurpleXmlNode *cnode)
- PurpleContact *contact = purple_contact_new();
+ PurpleMetaContact *contact = purple_meta_contact_new(); @@ -554,7 +554,7 @@
_purple_blist_get_last_child((PurpleBlistNode*)group));
if ((alias = purple_xmlnode_get_attrib(cnode, "alias"))) {
- purple_contact_set_alias(contact, alias);
+ purple_meta_contact_set_alias(contact, alias); for (x = cnode->child; x; x = x->next) {
@@ -980,14 +980,14 @@
-void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleContact *contact, PurpleGroup *group, PurpleBlistNode *node)
+void purple_blist_add_buddy(PurpleBuddy *buddy, PurpleMetaContact *contact, PurpleGroup *group, PurpleBlistNode *node) PurpleBuddyListClass *klass = NULL;
PurpleBuddyListPrivate *priv = NULL;
PurpleBlistNode *cnode, *bnode;
PurpleCountingNode *contact_counter, *group_counter;
struct _purple_hbuddy *hb, *hb2;
GHashTable *account_buddies;
@@ -1007,7 +1007,7 @@
if (node && PURPLE_IS_BUDDY(node)) {
- c = (PurpleContact*)node->parent;
+ c = (PurpleMetaContact*)node->parent; g = (PurpleGroup*)node->parent->parent;
@@ -1021,7 +1021,7 @@
g, purple_blist_get_last_sibling(priv->root));
- c = purple_contact_new();
+ c = purple_meta_contact_new(); purple_blist_add_contact(c, g,
_purple_blist_get_last_child((PurpleBlistNode*)g));
@@ -1074,9 +1074,9 @@
if (!bnode->parent->child) {
- purple_blist_remove_contact((PurpleContact*)bnode->parent);
+ purple_blist_remove_contact((PurpleMetaContact*)bnode->parent); - purple_contact_invalidate_priority_buddy((PurpleContact*)bnode->parent);
+ purple_meta_contact_invalidate_priority_buddy((PurpleMetaContact*)bnode->parent); if (klass && klass->update) {
klass->update(purplebuddylist, bnode->parent);
@@ -1131,7 +1131,7 @@
g_hash_table_replace(account_buddies, hb2, buddy);
- purple_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy));
+ purple_meta_contact_invalidate_priority_buddy(purple_buddy_get_contact(buddy)); @@ -1149,7 +1149,7 @@
PURPLE_BLIST_NODE(buddy));
-void purple_blist_add_contact(PurpleContact *contact, PurpleGroup *group, PurpleBlistNode *node)
+void purple_blist_add_contact(PurpleMetaContact *contact, PurpleGroup *group, PurpleBlistNode *node) PurpleBuddyListClass *klass = NULL;
PurpleBuddyListPrivate *priv = NULL;
@@ -1157,7 +1157,7 @@
PurpleBlistNode *gnode, *cnode, *bnode;
PurpleCountingNode *contact_counter, *group_counter;
- g_return_if_fail(PURPLE_IS_CONTACT(contact));
+ g_return_if_fail(PURPLE_IS_META_CONTACT(contact)); g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist));
if (PURPLE_BLIST_NODE(contact) == node)
@@ -1166,7 +1166,7 @@
klass = PURPLE_BUDDY_LIST_GET_CLASS(purplebuddylist);
priv = purple_buddy_list_get_instance_private(purplebuddylist);
- if (node && (PURPLE_IS_CONTACT(node) ||
+ if (node && (PURPLE_IS_META_CONTACT(node) || g = PURPLE_GROUP(node->parent);
@@ -1260,7 +1260,7 @@
- if (node && (PURPLE_IS_CONTACT(node) ||
+ if (node && (PURPLE_IS_META_CONTACT(node) || node->next->prev = cnode;
@@ -1381,14 +1381,14 @@
-void purple_blist_remove_contact(PurpleContact *contact)
+void purple_blist_remove_contact(PurpleMetaContact *contact) PurpleBuddyListClass *klass = NULL;
PurpleBlistNode *node, *gnode;
g_return_if_fail(PURPLE_IS_BUDDY_LIST(purplebuddylist));
- g_return_if_fail(PURPLE_IS_CONTACT(contact));
+ g_return_if_fail(PURPLE_IS_META_CONTACT(contact)); klass = PURPLE_BUDDY_LIST_GET_CLASS(purplebuddylist);
node = (PurpleBlistNode *)contact;
@@ -1443,7 +1443,7 @@
PurpleBuddyListPrivate *priv = NULL;
PurpleBlistNode *node, *cnode, *gnode;
PurpleCountingNode *contact_counter, *group_counter;
- PurpleContact *contact;
+ PurpleMetaContact *contact; struct _purple_hbuddy hb;
GHashTable *account_buddies;
@@ -1458,7 +1458,7 @@
node = PURPLE_BLIST_NODE(buddy);
gnode = (cnode != NULL) ? cnode->parent : NULL;
- contact = (PurpleContact *)cnode;
+ contact = (PurpleMetaContact *)cnode; group = (PurpleGroup *)gnode;
/* Remove the node from its parent */
@@ -1487,8 +1487,8 @@
purple_counting_node_change_total_size(contact_counter, -1);
/* Re-sort the contact */
- if (cnode->child && purple_contact_get_priority_buddy(contact) == buddy) {
- purple_contact_invalidate_priority_buddy(contact);
+ if (cnode->child && purple_meta_contact_get_priority_buddy(contact) == buddy) { + purple_meta_contact_invalidate_priority_buddy(contact); if (klass && klass->update) {
klass->update(purplebuddylist, cnode);
@@ -1838,7 +1838,7 @@
if (!PURPLE_IS_GROUP(gnode))
for (cnode = gnode->child; cnode; cnode = cnode->next) {
- if (PURPLE_IS_CONTACT(cnode)) {
+ if (PURPLE_IS_META_CONTACT(cnode)) { gboolean recompute = FALSE;
for (bnode = cnode->child; bnode; bnode = bnode->next) {
if (PURPLE_IS_BUDDY(bnode) &&
@@ -1857,8 +1857,8 @@
purple_blist_node_get_bool(
cnode, "show_offline")) {
- purple_contact_invalidate_priority_buddy(
- (PurpleContact *)cnode);
+ purple_meta_contact_invalidate_priority_buddy( + (PurpleMetaContact *)cnode); klass->update(purplebuddylist,
@@ -1881,7 +1881,7 @@
PurpleCountingNode *contact_counter, *group_counter;
- PurpleContact *contact;
+ PurpleMetaContact *contact; GList *list = NULL, *iter = NULL;
@@ -1896,9 +1896,9 @@
group = (PurpleGroup *)gnode;
for (cnode = gnode->child; cnode; cnode = cnode->next) {
- if (PURPLE_IS_CONTACT(cnode)) {
+ if (PURPLE_IS_META_CONTACT(cnode)) { gboolean recompute = FALSE;
- contact = (PurpleContact *)cnode;
+ contact = (PurpleMetaContact *)cnode; for (bnode = cnode->child; bnode; bnode = bnode->next) {
if (!PURPLE_IS_BUDDY(bnode))
@@ -1928,8 +1928,8 @@
if (!g_list_find(list, presence))
list = g_list_prepend(list, presence);
- if (purple_contact_get_priority_buddy(contact) == buddy)
- purple_contact_invalidate_priority_buddy(contact);
+ if (purple_meta_contact_get_priority_buddy(contact) == buddy) + purple_meta_contact_invalidate_priority_buddy(contact); @@ -1941,7 +1941,7 @@
- purple_contact_invalidate_priority_buddy(contact);
+ purple_meta_contact_invalidate_priority_buddy(contact); if (klass && klass->update) {
klass->update(purplebuddylist,
@@ -1988,7 +1988,7 @@
for(meta_contact = group->child; meta_contact != NULL; meta_contact = meta_contact->next) {
- if(PURPLE_IS_CONTACT(meta_contact)) {
+ if(PURPLE_IS_META_CONTACT(meta_contact)) { if(meta_contact_func != NULL) {
meta_contact_func(meta_contact, data);
--- a/libpurple/contact.c Wed Sep 21 03:27:36 2022 -0500
+++ b/libpurple/contact.c Thu Sep 22 20:25:37 2022 -0500
@@ -27,9 +27,9 @@
#include "purpleprivate.h"
-typedef struct _PurpleContactPrivate PurpleContactPrivate;
+typedef struct _PurpleMetaContactPrivate PurpleMetaContactPrivate; -struct _PurpleContactPrivate {
+struct _PurpleMetaContactPrivate { char *alias; /* The user-set alias of the contact */
PurpleBuddy *priority_buddy; /* The "top" buddy for this contact */
gboolean priority_valid; /* Is priority valid? */
@@ -48,18 +48,18 @@
*****************************************************************************/
static GParamSpec *properties[PROP_LAST];
-G_DEFINE_TYPE_WITH_PRIVATE(PurpleContact, purple_contact,
+G_DEFINE_TYPE_WITH_PRIVATE(PurpleMetaContact, purple_meta_contact, PURPLE_TYPE_COUNTING_NODE);
/******************************************************************************
*****************************************************************************/
-purple_contact_compute_priority_buddy(PurpleContact *contact) {
+purple_meta_contact_compute_priority_buddy(PurpleMetaContact *contact) { PurpleBuddy *new_priority = NULL;
- PurpleContactPrivate *priv =
- purple_contact_get_instance_private(contact);
+ PurpleMetaContactPrivate *priv = + purple_meta_contact_get_instance_private(contact); priv->priority_buddy = NULL;
for (bnode = PURPLE_BLIST_NODE(contact)->child;
@@ -102,24 +102,24 @@
-purple_contact_get_group(const PurpleContact *contact)
+purple_meta_contact_get_group(const PurpleMetaContact *contact) - g_return_val_if_fail(PURPLE_IS_CONTACT(contact), NULL);
+ g_return_val_if_fail(PURPLE_IS_META_CONTACT(contact), NULL); return PURPLE_GROUP(PURPLE_BLIST_NODE(contact)->parent);
-purple_contact_set_alias(PurpleContact *contact, const char *alias)
+purple_meta_contact_set_alias(PurpleMetaContact *contact, const char *alias) - PurpleContactPrivate *priv = NULL;
+ PurpleMetaContactPrivate *priv = NULL; PurpleConversationManager *manager = NULL;
- g_return_if_fail(PURPLE_IS_CONTACT(contact));
- priv = purple_contact_get_instance_private(contact);
+ g_return_if_fail(PURPLE_IS_META_CONTACT(contact)); + priv = purple_meta_contact_get_instance_private(contact); if ((alias != NULL) && (*alias != '\0'))
new_alias = purple_utf8_strip_unprintables(alias);
@@ -165,24 +165,24 @@
-const char *purple_contact_get_alias(PurpleContact* contact)
+const char *purple_meta_contact_get_alias(PurpleMetaContact* contact) - PurpleContactPrivate *priv = NULL;
+ PurpleMetaContactPrivate *priv = NULL; - g_return_val_if_fail(PURPLE_IS_CONTACT(contact), NULL);
+ g_return_val_if_fail(PURPLE_IS_META_CONTACT(contact), NULL); - priv = purple_contact_get_instance_private(contact);
+ priv = purple_meta_contact_get_instance_private(contact); - return purple_buddy_get_alias(purple_contact_get_priority_buddy(contact));
+ return purple_buddy_get_alias(purple_meta_contact_get_priority_buddy(contact)); -gboolean purple_contact_on_account(PurpleContact *c, PurpleAccount *account)
+gboolean purple_meta_contact_on_account(PurpleMetaContact *c, PurpleAccount *account) PurpleBlistNode *bnode, *cnode = (PurpleBlistNode *) c;
- g_return_val_if_fail(PURPLE_IS_CONTACT(c), FALSE);
+ g_return_val_if_fail(PURPLE_IS_META_CONTACT(c), FALSE); g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), FALSE);
for (bnode = cnode->child; bnode; bnode = bnode->next) {
@@ -198,43 +198,43 @@
-void purple_contact_invalidate_priority_buddy(PurpleContact *contact)
+void purple_meta_contact_invalidate_priority_buddy(PurpleMetaContact *contact) - PurpleContactPrivate *priv = NULL;
+ PurpleMetaContactPrivate *priv = NULL; - g_return_if_fail(PURPLE_IS_CONTACT(contact));
+ g_return_if_fail(PURPLE_IS_META_CONTACT(contact)); - priv = purple_contact_get_instance_private(contact);
+ priv = purple_meta_contact_get_instance_private(contact); priv->priority_valid = FALSE;
-PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact)
+PurpleBuddy *purple_meta_contact_get_priority_buddy(PurpleMetaContact *contact) - PurpleContactPrivate *priv = NULL;
+ PurpleMetaContactPrivate *priv = NULL; - g_return_val_if_fail(PURPLE_IS_CONTACT(contact), NULL);
+ g_return_val_if_fail(PURPLE_IS_META_CONTACT(contact), NULL); - priv = purple_contact_get_instance_private(contact);
+ priv = purple_meta_contact_get_instance_private(contact); if (!priv->priority_valid)
- purple_contact_compute_priority_buddy(contact);
+ purple_meta_contact_compute_priority_buddy(contact); return priv->priority_buddy;
-void purple_contact_merge(PurpleContact *source, PurpleBlistNode *node)
+void purple_meta_contact_merge(PurpleMetaContact *source, PurpleBlistNode *node) PurpleBlistNode *sourcenode = (PurpleBlistNode*)source;
PurpleBlistNode *prev, *cur, *next;
+ PurpleMetaContact *target; - g_return_if_fail(PURPLE_IS_CONTACT(source));
+ g_return_if_fail(PURPLE_IS_META_CONTACT(source)); g_return_if_fail(PURPLE_IS_BLIST_NODE(node));
- if (PURPLE_IS_CONTACT(node)) {
- target = (PurpleContact *)node;
+ if (PURPLE_IS_META_CONTACT(node)) { + target = (PurpleMetaContact *)node; prev = _purple_blist_get_last_child(node);
} else if (PURPLE_IS_BUDDY(node)) {
- target = (PurpleContact *)node->parent;
+ target = (PurpleMetaContact *)node->parent; @@ -260,14 +260,14 @@
**************************************************************************/
/* Set method for GObject properties */
-purple_contact_set_property(GObject *obj, guint param_id, const GValue *value,
+purple_meta_contact_set_property(GObject *obj, guint param_id, const GValue *value, - PurpleContact *contact = PURPLE_CONTACT(obj);
+ PurpleMetaContact *contact = PURPLE_META_CONTACT(obj); - purple_contact_set_alias(contact, g_value_get_string(value));
+ purple_meta_contact_set_alias(contact, g_value_get_string(value)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -277,19 +277,19 @@
/* Get method for GObject properties */
-purple_contact_get_property(GObject *obj, guint param_id, GValue *value,
+purple_meta_contact_get_property(GObject *obj, guint param_id, GValue *value, - PurpleContact *contact = PURPLE_CONTACT(obj);
- PurpleContactPrivate *priv =
- purple_contact_get_instance_private(contact);
+ PurpleMetaContact *contact = PURPLE_META_CONTACT(obj); + PurpleMetaContactPrivate *priv = + purple_meta_contact_get_instance_private(contact); g_value_set_string(value, priv->alias);
case PROP_PRIORITY_BUDDY:
- g_value_set_object(value, purple_contact_get_priority_buddy(contact));
+ g_value_set_object(value, purple_meta_contact_get_priority_buddy(contact)); G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
@@ -299,7 +299,7 @@
/* GObject initialization function */
-purple_contact_init(PurpleContact *contact)
+purple_meta_contact_init(PurpleMetaContact *contact) purple_blist_new_node(purple_blist_get_default(),
PURPLE_BLIST_NODE(contact));
@@ -307,26 +307,26 @@
/* GObject finalize function */
-purple_contact_finalize(GObject *object)
+purple_meta_contact_finalize(GObject *object) - PurpleContactPrivate *priv = purple_contact_get_instance_private(
- PURPLE_CONTACT(object));
+ PurpleMetaContactPrivate *priv = purple_meta_contact_get_instance_private( + PURPLE_META_CONTACT(object)); - G_OBJECT_CLASS(purple_contact_parent_class)->finalize(object);
+ G_OBJECT_CLASS(purple_meta_contact_parent_class)->finalize(object); /* Class initializer function */
-static void purple_contact_class_init(PurpleContactClass *klass)
+static void purple_meta_contact_class_init(PurpleMetaContactClass *klass) GObjectClass *obj_class = G_OBJECT_CLASS(klass);
- obj_class->finalize = purple_contact_finalize;
+ obj_class->finalize = purple_meta_contact_finalize; - obj_class->get_property = purple_contact_get_property;
- obj_class->set_property = purple_contact_set_property;
+ obj_class->get_property = purple_meta_contact_get_property; + obj_class->set_property = purple_meta_contact_set_property; properties[PROP_ALIAS] = g_param_spec_string(
@@ -347,9 +347,9 @@
g_object_class_install_properties(obj_class, PROP_LAST, properties);
-purple_contact_new(void)
+purple_meta_contact_new(void) - return g_object_new(PURPLE_TYPE_CONTACT, NULL);
+ return g_object_new(PURPLE_TYPE_META_CONTACT, NULL); --- a/pidgin/gtkblist.c Wed Sep 21 03:27:36 2022 -0500
+++ b/pidgin/gtkblist.c Thu Sep 22 20:25:37 2022 -0500
@@ -181,8 +181,8 @@
pidgin_blist_get_selected_buddy(PidginBuddyList *blist) {
PurpleBuddy *buddy = NULL;
- if(PURPLE_IS_CONTACT(blist->selected_node)) {
- buddy = purple_contact_get_priority_buddy(PURPLE_CONTACT(blist->selected_node));
+ if(PURPLE_IS_META_CONTACT(blist->selected_node)) { + buddy = purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(blist->selected_node)); } else if(PURPLE_IS_BUDDY(blist->selected_node)) {
buddy = PURPLE_BUDDY(blist->selected_node);
@@ -264,8 +264,8 @@
if (PURPLE_IS_BUDDY(node)) {
PurpleGroup *group = purple_buddy_get_group(PURPLE_BUDDY(node));
purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(group), NULL);
- } else if (PURPLE_IS_CONTACT(node) || PURPLE_IS_CHAT(node)) {
- PurpleGroup *group = purple_contact_get_group(PURPLE_CONTACT(node));
+ } else if (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_CHAT(node)) { + PurpleGroup *group = purple_meta_contact_get_group(PURPLE_META_CONTACT(node)); purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(group), NULL);
} else if (PURPLE_IS_GROUP(node)) {
purple_blist_request_add_buddy(NULL, NULL, purple_group_get_name(PURPLE_GROUP(node)), NULL);
@@ -291,8 +291,8 @@
gtk_tree_model_get(GTK_TREE_MODEL(blist->treemodel), &iter, NODE_COLUMN, &node, -1);
if (PURPLE_IS_BUDDY(node))
purple_blist_request_add_chat(NULL, purple_buddy_get_group(PURPLE_BUDDY(node)), NULL, NULL);
- if (PURPLE_IS_CONTACT(node) || PURPLE_IS_CHAT(node))
- purple_blist_request_add_chat(NULL, purple_contact_get_group(PURPLE_CONTACT(node)), NULL, NULL);
+ if (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_CHAT(node)) + purple_blist_request_add_chat(NULL, purple_meta_contact_get_group(PURPLE_META_CONTACT(node)), NULL, NULL); else if (PURPLE_IS_GROUP(node))
purple_blist_request_add_chat(NULL, (PurpleGroup*)node, NULL, NULL);
@@ -511,8 +511,8 @@
pidgin_dialogs_remove_chat(PURPLE_CHAT(node));
} else if(PURPLE_IS_GROUP(node)) {
pidgin_dialogs_remove_group(PURPLE_GROUP(node));
- } else if(PURPLE_IS_CONTACT(node)) {
- pidgin_dialogs_remove_contact(PURPLE_CONTACT(node));
+ } else if(PURPLE_IS_META_CONTACT(node)) { + pidgin_dialogs_remove_contact(PURPLE_META_CONTACT(node)); @@ -658,8 +658,8 @@
gtk_tree_path_free (path);
gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
- if (PURPLE_IS_CONTACT(node))
- text = purple_contact_get_alias(PURPLE_CONTACT(node));
+ if (PURPLE_IS_META_CONTACT(node)) + text = purple_meta_contact_get_alias(PURPLE_META_CONTACT(node)); else if (PURPLE_IS_BUDDY(node))
text = purple_buddy_get_alias(PURPLE_BUDDY(node));
else if (PURPLE_IS_GROUP(node))
@@ -695,7 +695,7 @@
if (PURPLE_IS_BUDDY(node))
node = purple_blist_node_get_parent(node);
- if (!PURPLE_IS_CONTACT(node))
+ if (!PURPLE_IS_META_CONTACT(node)) for (b = purple_blist_node_get_first_child(node);
@@ -723,7 +723,7 @@
- purple_contact_merge((PurpleContact *)node, contact);
+ purple_meta_contact_merge((PurpleMetaContact *)node, contact); /* And show the expanded contact, so the people know what's going on */
@@ -744,10 +744,10 @@
contact = purple_blist_node_get_sibling_next(contact)) {
- if (!PURPLE_IS_CONTACT(contact))
+ if (!PURPLE_IS_META_CONTACT(contact)) - node_alias = g_utf8_casefold(purple_contact_get_alias((PurpleContact *)contact), -1);
+ node_alias = g_utf8_casefold(purple_meta_contact_get_alias((PurpleMetaContact *)contact), -1); if (node_alias && !g_utf8_collate(node_alias, a)) {
merges = g_list_append(merges, contact);
@@ -804,23 +804,23 @@
gtk_tree_view_set_enable_search (GTK_TREE_VIEW(gtkblist->treeview), TRUE);
g_object_set(G_OBJECT(gtkblist->text_rend), "editable", FALSE, NULL);
- if (PURPLE_IS_CONTACT(node)) {
- PurpleContact *contact = PURPLE_CONTACT(node);
+ if (PURPLE_IS_META_CONTACT(node)) { + PurpleMetaContact *contact = PURPLE_META_CONTACT(node); PidginBlistNode *gtknode = g_object_get_data(G_OBJECT(node), UI_DATA);
- * Using purple_contact_get_alias here breaks because we
+ * Using purple_meta_contact_get_alias here breaks because we * specifically want to check the contact alias only (i.e. not
- * the priority buddy, which purple_contact_get_alias does).
+ * the priority buddy, which purple_meta_contact_get_alias does). * The "alias" GObject property gives us just the alias.
g_object_get(contact, "alias", &alias, NULL);
if (alias || gtknode->contact_expanded) {
- purple_contact_set_alias(contact, arg2);
+ purple_meta_contact_set_alias(contact, arg2); gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
- PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
+ PurpleBuddy *buddy = purple_meta_contact_get_priority_buddy(contact); purple_buddy_set_local_alias(buddy, arg2);
purple_serv_alias_buddy(buddy);
gtk_blist_auto_personize(purple_blist_node_get_parent(node), arg2);
@@ -1239,7 +1239,7 @@
purple_blist_node_set_bool(node, "collapsed", TRUE);
for(cnode = purple_blist_node_get_first_child(node); cnode; cnode = purple_blist_node_get_sibling_next(cnode)) {
- if (PURPLE_IS_CONTACT(cnode)) {
+ if (PURPLE_IS_META_CONTACT(cnode)) { gtknode = g_object_get_data(G_OBJECT(cnode), UI_DATA);
if (!gtknode->contact_expanded)
@@ -1248,7 +1248,7 @@
gtk_widget_trigger_tooltip_query(gtkblist->treeview);
- } else if(PURPLE_IS_CONTACT(node)) {
+ } else if(PURPLE_IS_META_CONTACT(node)) { pidgin_blist_collapse_contact_cb(NULL, node);
@@ -1261,11 +1261,11 @@
gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &iter, NODE_COLUMN, &node, -1);
- if(PURPLE_IS_CONTACT(node) || PURPLE_IS_BUDDY(node)) {
+ if(PURPLE_IS_META_CONTACT(node) || PURPLE_IS_BUDDY(node)) { - if(PURPLE_IS_CONTACT(node))
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
+ if(PURPLE_IS_META_CONTACT(node)) + buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); buddy = (PurpleBuddy*)node;
@@ -1307,7 +1307,7 @@
- if(!PURPLE_IS_CONTACT(node)) {
+ if(!PURPLE_IS_META_CONTACT(node)) { @@ -1341,7 +1341,7 @@
PidginBlistNode *gtknode;
- if(!PURPLE_IS_CONTACT(node))
+ if(!PURPLE_IS_META_CONTACT(node)) gtknode = g_object_get_data(G_OBJECT(node), UI_DATA);
@@ -1377,8 +1377,8 @@
if(state & GDK_CONTROL_MASK && (keyval == 'o' || keyval == 'O')) {
- if(PURPLE_IS_CONTACT(node)) {
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
+ if(PURPLE_IS_META_CONTACT(node)) { + buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); } else if(PURPLE_IS_BUDDY(node)) {
buddy = (PurpleBuddy*)node;
@@ -1424,7 +1424,7 @@
path = gtk_tree_model_get_path(model, &iter);
if (!gtk_tree_view_row_expanded(tv, path)) {
- if (PURPLE_IS_CONTACT(node)) {
+ if (PURPLE_IS_META_CONTACT(node)) { pidgin_blist_expand_contact_cb(NULL, node);
gtk_tree_path_free(path);
@@ -1498,9 +1498,9 @@
enabled = purple_blist_node_get_bool(node, "gtk-persistent");
variant = g_variant_new_boolean(enabled);
g_simple_action_set_state(G_SIMPLE_ACTION(action), variant);
- } else if ((PURPLE_IS_CONTACT(node)) && (gtknode->contact_expanded)) {
+ } else if ((PURPLE_IS_META_CONTACT(node)) && (gtknode->contact_expanded)) { menu = gtk_application_get_menu_by_id(gtk_application, "contact");
- } else if (PURPLE_IS_CONTACT(node) || PURPLE_IS_BUDDY(node)) {
+ } else if (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_BUDDY(node)) { PurpleAccount *account = NULL;
PurpleBuddy *buddy = NULL;
PurpleConnection *connection = NULL;
@@ -1510,8 +1510,8 @@
menu = gtk_application_get_menu_by_id(gtk_application, "buddy");
- if(PURPLE_IS_CONTACT(node)) {
- buddy = purple_contact_get_priority_buddy(PURPLE_CONTACT(node));
+ if(PURPLE_IS_META_CONTACT(node)) { + buddy = purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node)); buddy = PURPLE_BUDDY(node);
@@ -1625,7 +1625,7 @@
/* CTRL+middle click expands or collapse a contact */
} else if ((button == GDK_BUTTON_MIDDLE) && (n_press == 1) &&
- (state & GDK_CONTROL_MASK) && PURPLE_IS_CONTACT(node)) {
+ (state & GDK_CONTROL_MASK) && PURPLE_IS_META_CONTACT(node)) { if (gtknode->contact_expanded)
pidgin_blist_collapse_contact_cb(NULL, node);
@@ -1634,11 +1634,11 @@
/* Double middle click gets info */
} else if ((button == GDK_BUTTON_MIDDLE) && (n_press == 2) &&
- (PURPLE_IS_CONTACT(node) || PURPLE_IS_BUDDY(node))) {
+ (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_BUDDY(node))) { - if(PURPLE_IS_CONTACT(node))
- b = purple_contact_get_priority_buddy((PurpleContact*)node);
+ if(PURPLE_IS_META_CONTACT(node)) + b = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); @@ -1711,15 +1711,15 @@
GdkPixbuf *buf, *ret = NULL;
PurpleBuddyIcon *icon = NULL;
PurpleAccount *account = NULL;
- PurpleContact *contact = NULL;
+ PurpleMetaContact *contact = NULL; PurpleProtocol *protocol = NULL;
PurpleBuddyIconSpec *icon_spec = NULL;
gint orig_width, orig_height, scale_width, scale_height;
- if (PURPLE_IS_CONTACT(node)) {
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
- contact = (PurpleContact*)node;
+ if (PURPLE_IS_META_CONTACT(node)) { + buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); + contact = (PurpleMetaContact*)node; } else if (PURPLE_IS_BUDDY(node)) {
buddy = (PurpleBuddy*)node;
contact = purple_buddy_get_contact(buddy);
@@ -1922,9 +1922,9 @@
PurpleBuddy *buddy = NULL;
- if(PURPLE_IS_CONTACT(node)) {
+ if(PURPLE_IS_META_CONTACT(node)) { if(!gtknode->contact_expanded) {
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
+ buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); gtkbuddynode = g_object_get_data(G_OBJECT(buddy), UI_DATA);
@@ -2074,9 +2074,9 @@
add_tip_for_account(grid, row, account);
- } else if (PURPLE_IS_CONTACT(node)) {
+ } else if (PURPLE_IS_META_CONTACT(node)) { - PurpleBuddy *b = purple_contact_get_priority_buddy(PURPLE_CONTACT(node));
+ PurpleBuddy *b = purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node)); for(child = node->child; child; child = child->next) {
@@ -2249,13 +2249,13 @@
cur = g_list_delete_link(cur, cur);
- else if (PURPLE_IS_CONTACT(node) || PURPLE_IS_BUDDY(node))
+ else if (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_BUDDY(node)) /* NOTE: THIS FUNCTION IS NO LONGER CALLED FOR CONTACTS.
* It is only called by create_tip_for_node(), and create_tip_for_node() is never called for a contact.
PurplePresence *presence;
PurpleNotifyUserInfo *user_info;
@@ -2264,10 +2264,10 @@
time_t idle_secs, signon;
- if (PURPLE_IS_CONTACT(node))
+ if (PURPLE_IS_META_CONTACT(node)) - c = (PurpleContact *)node;
- b = purple_contact_get_priority_buddy(c);
+ c = (PurpleMetaContact *)node; + b = purple_meta_contact_get_priority_buddy(c); @@ -2356,7 +2356,7 @@
- if (gtknode && (!gtknode->contact_expanded || PURPLE_IS_CONTACT(node)))
+ if (gtknode && (!gtknode->contact_expanded || PURPLE_IS_META_CONTACT(node))) /* We're either looking at a buddy for a collapsed contact or
* an expanded contact itself so we show the most recent
@@ -2488,9 +2488,9 @@
PurplePresence *p = NULL;
- if(PURPLE_IS_CONTACT(node)) {
+ if(PURPLE_IS_META_CONTACT(node)) { if(!gtknode->contact_expanded) {
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
+ buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); } else if(PURPLE_IS_BUDDY(node)) {
PidginBlistNode *pidgin_node = NULL;
@@ -2595,14 +2595,14 @@
const char *name, *name_color, *status_color, *dim_grey;
PurpleProtocol *protocol = NULL;
- PurpleContact *contact;
+ PurpleMetaContact *contact; PurplePresence *presence;
PidginBlistNode *gtkcontactnode = NULL;
char *idletime = NULL, *statustext = NULL, *nametext = NULL;
/* XXX Good luck cleaning up this crap */
- contact = PURPLE_CONTACT(PURPLE_BLIST_NODE(b)->parent);
+ contact = PURPLE_META_CONTACT(PURPLE_BLIST_NODE(b)->parent); gtkcontactnode = g_object_get_data(G_OBJECT(contact), UI_DATA);
@@ -2742,7 +2742,7 @@
gtkblist->selected_node = NULL;
if (get_iter_from_node(node, &iter)) {
gtk_tree_store_remove(gtkblist->treemodel, &iter);
- if(update && (PURPLE_IS_CONTACT(node) ||
+ if(update && (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_BUDDY(node) || PURPLE_IS_CHAT(node))) {
pidgin_blist_update(list, node->parent);
@@ -2848,7 +2848,7 @@
- g_return_val_if_fail(PURPLE_IS_CONTACT(node), FALSE);
+ g_return_val_if_fail(PURPLE_IS_META_CONTACT(node), FALSE); pidgin_node = g_object_get_data(G_OBJECT(node), UI_DATA);
@@ -2979,8 +2979,8 @@
- if (PURPLE_IS_CONTACT(node)) {
- PurpleBuddy *b = purple_contact_get_priority_buddy(PURPLE_CONTACT(node));
+ if (PURPLE_IS_META_CONTACT(node)) { + PurpleBuddy *b = purple_meta_contact_get_priority_buddy(PURPLE_META_CONTACT(node)); if (!purple_buddy_get_local_alias(b))
compare = purple_buddy_get_name(b);
} else if (PURPLE_IS_BUDDY(node)) {
@@ -3298,7 +3298,7 @@
if(get_iter_from_node(node, &cur))
- if(PURPLE_IS_CONTACT(node) || PURPLE_IS_CHAT(node)) {
+ if(PURPLE_IS_META_CONTACT(node) || PURPLE_IS_CHAT(node)) { current_sort_method->func(node, list, parent_iter, curptr, iter);
sort_method_none(node, list, parent_iter, curptr, iter);
@@ -3331,7 +3331,7 @@
if(PURPLE_IS_GROUP(node->parent)) {
if(!purple_blist_node_get_bool(node->parent, "collapsed"))
expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
- } else if(PURPLE_IS_CONTACT(node->parent) &&
+ } else if(PURPLE_IS_META_CONTACT(node->parent) && gtkparentnode->contact_expanded) {
expand = gtk_tree_model_get_path(GTK_TREE_MODEL(gtkblist->treemodel), &parent_iter);
@@ -3362,7 +3362,7 @@
else if (PURPLE_IS_BUDDY(node))
gnode = node->parent->parent;
- else if (PURPLE_IS_CONTACT(node) || PURPLE_IS_CHAT(node))
+ else if (PURPLE_IS_META_CONTACT(node) || PURPLE_IS_CHAT(node)) @@ -3485,7 +3485,7 @@
static void pidgin_blist_update_contact(PurpleBuddyList *list, PurpleBlistNode *node)
- PurpleContact *contact;
+ PurpleMetaContact *contact; PidginBlistNode *gtknode;
@@ -3497,7 +3497,7 @@
- g_return_if_fail(PURPLE_IS_CONTACT(cnode));
+ g_return_if_fail(PURPLE_IS_META_CONTACT(cnode)); /* First things first, update the group */
if (PURPLE_IS_BUDDY(node))
@@ -3505,8 +3505,8 @@
pidgin_blist_update_group(list, cnode->parent);
- contact = (PurpleContact*)cnode;
- buddy = purple_contact_get_priority_buddy(contact);
+ contact = (PurpleMetaContact*)cnode; + buddy = purple_meta_contact_get_priority_buddy(contact); if (buddy_is_displayable(buddy))
@@ -3521,7 +3521,7 @@
const gchar *icon_name = NULL;
- mark = g_markup_escape_text(purple_contact_get_alias(contact), -1);
+ mark = g_markup_escape_text(purple_meta_contact_get_alias(contact), -1); icon_name = pidgin_blist_get_status_icon_name(cnode);
@@ -3656,7 +3656,7 @@
if(PURPLE_IS_GROUP(node)) {
pidgin_blist_update_group(list, node);
- } else if(PURPLE_IS_CONTACT(node)) {
+ } else if(PURPLE_IS_META_CONTACT(node)) { pidgin_blist_update_contact(list, node);
} else if(PURPLE_IS_BUDDY(node)) {
pidgin_blist_update_buddy(list, node, TRUE);
@@ -3998,8 +3998,8 @@
- if(PURPLE_IS_CONTACT(node)) {
- my_name = purple_contact_get_alias((PurpleContact*)node);
+ if(PURPLE_IS_META_CONTACT(node)) { + my_name = purple_meta_contact_get_alias((PurpleMetaContact*)node); } else if(PURPLE_IS_CHAT(node)) {
my_name = purple_chat_get_name((PurpleChat*)node);
@@ -4019,8 +4019,8 @@
gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &n, -1);
- if(PURPLE_IS_CONTACT(n)) {
- this_name = purple_contact_get_alias((PurpleContact*)n);
+ if(PURPLE_IS_META_CONTACT(n)) { + this_name = purple_meta_contact_get_alias((PurpleMetaContact*)n); } else if(PURPLE_IS_CHAT(n)) {
this_name = purple_chat_get_name((PurpleChat*)n);
@@ -4058,8 +4058,8 @@
PurpleBuddy *my_buddy, *this_buddy;
- if(PURPLE_IS_CONTACT(node)) {
- my_buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
+ if(PURPLE_IS_META_CONTACT(node)) { + my_buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)node); } else if(PURPLE_IS_CHAT(node)) {
@@ -4086,16 +4086,16 @@
gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, NODE_COLUMN, &n, -1);
- if(PURPLE_IS_CONTACT(n)) {
- this_buddy = purple_contact_get_priority_buddy((PurpleContact*)n);
+ if(PURPLE_IS_META_CONTACT(n)) { + this_buddy = purple_meta_contact_get_priority_buddy((PurpleMetaContact*)n); name_cmp = purple_utf8_strcasecmp(
- purple_contact_get_alias(purple_buddy_get_contact(my_buddy)),
+ purple_meta_contact_get_alias(purple_buddy_get_contact(my_buddy)), - ? purple_contact_get_alias(purple_buddy_get_contact(this_buddy))
+ ? purple_meta_contact_get_alias(purple_buddy_get_contact(this_buddy)) presence_cmp = purple_buddy_presence_compare(