pidgin/pidgin

Added transient-buddy back for showing the buddy menu when
release-2.x.y
2022-04-15, Belgin Știrbu
c5c98b27f755
Parents f20e9970a54f
Children 0079467afee4
Added transient-buddy back for showing the buddy menu when
right-clicking the topic bar.

Testing Done:
Tested on Debian and Windows. Right-clicking showed the correct context menu.

Bugs closed: PIDGIN-17523

Reviewed at https://reviews.imfreedom.org/r/1381/
--- a/pidgin/gtkconv.c Fri Apr 15 11:13:22 2022 -0500
+++ b/pidgin/gtkconv.c Fri Apr 15 11:15:37 2022 -0500
@@ -2333,6 +2333,7 @@
gray_stuff_out(gtkconv);
update_typing_icon(gtkconv);
+ g_object_set_data(G_OBJECT(entry), "transient_buddy", NULL);
regenerate_options_items(gtkconv->win);
gtk_window_set_title(GTK_WINDOW(gtkconv->win->window),
@@ -3223,6 +3224,22 @@
return FALSE;
buddy = purple_find_buddy(conv->account, conv->name);
+
+ /* gotta remain bug-compatible :( libpurple < 2.0.2 didn't handle
+ * removing "isolated" buddy nodes well */
+ if (purple_version_check(2, 0, 2) == NULL) {
+ if ((buddy == NULL) && (gtkconv->imhtml != NULL)) {
+ buddy = g_object_get_data(G_OBJECT(gtkconv->imhtml), "transient_buddy");
+ }
+
+ if ((buddy == NULL) && (gtkconv->imhtml != NULL)) {
+ buddy = purple_buddy_new(conv->account, conv->name, NULL);
+ purple_blist_node_set_flags((PurpleBlistNode *)buddy,
+ PURPLE_BLIST_NODE_FLAG_NO_SAVE);
+ g_object_set_data_full(G_OBJECT(gtkconv->imhtml), "transient_buddy",
+ buddy, (GDestroyNotify)purple_buddy_destroy);
+ }
+ }
}
if (chat)