--- a/pidgin/gtkroomlist.c Sat May 29 03:23:01 2021 -0500
+++ b/pidgin/gtkroomlist.c Sun May 30 17:20:19 2021 -0500
@@ -36,6 +36,8 @@
G_DECLARE_FINAL_TYPE(PidginRoomlistDialog, pidgin_roomlist_dialog, PIDGIN,
ROOMLIST_DIALOG, GtkDialog)
+#define PIDGIN_ROOMLIST_UI_DATA "pidgin-ui" struct _PidginRoomlistDialog {
@@ -93,7 +95,10 @@
g_source_remove(dialog->pg_update_to);
- PidginRoomlist *rl = purple_roomlist_get_ui_data(dialog->roomlist);
+ PidginRoomlist *rl = NULL; + rl = g_object_get_data(G_OBJECT(dialog->roomlist), + PIDGIN_ROOMLIST_UI_DATA); if (dialog->pg_update_to > 0)
/* yes, that's right, unref it twice. */
@@ -117,7 +122,10 @@
dialog->account = account;
if (change && dialog->roomlist) {
- PidginRoomlist *rl = purple_roomlist_get_ui_data(dialog->roomlist);
+ PidginRoomlist *rl = NULL; + rl = g_object_get_data(G_OBJECT(dialog->roomlist), + PIDGIN_ROOMLIST_UI_DATA); gtk_widget_destroy(rl->tree);
@@ -137,7 +145,9 @@
if (dialog->roomlist != NULL) {
- rl = purple_roomlist_get_ui_data(dialog->roomlist);
+ rl = g_object_get_data(G_OBJECT(dialog->roomlist), + PIDGIN_ROOMLIST_UI_DATA); gtk_widget_destroy(rl->tree);
g_object_unref(dialog->roomlist);
@@ -146,7 +156,9 @@
g_object_ref(dialog->roomlist);
- rl = purple_roomlist_get_ui_data(dialog->roomlist);
+ rl = g_object_get_data(G_OBJECT(dialog->roomlist), + PIDGIN_ROOMLIST_UI_DATA); gtk_widget_set_sensitive(dialog->account_widget, FALSE);
@@ -240,9 +252,11 @@
static void add_room_to_blist_cb(GtkButton *button, PidginRoomlistDialog *dialog)
PurpleRoomlist *rl = dialog->roomlist;
- PidginRoomlist *grl = purple_roomlist_get_ui_data(rl);
+ PidginRoomlist *grl = NULL; struct _menu_cb_info *info = g_object_get_data(G_OBJECT(button), "room-info");
+ grl = g_object_get_data(G_OBJECT(rl), PIDGIN_ROOMLIST_UI_DATA); do_add_room_cb(grl->tree, info);
@@ -255,9 +269,11 @@
static void join_button_cb(GtkButton *button, PidginRoomlistDialog *dialog)
PurpleRoomlist *rl = dialog->roomlist;
- PidginRoomlist *grl = purple_roomlist_get_ui_data(rl);
+ PidginRoomlist *grl = NULL; struct _menu_cb_info *info = g_object_get_data(G_OBJECT(button), "room-info");
+ grl = g_object_get_data(G_OBJECT(rl), PIDGIN_ROOMLIST_UI_DATA); do_join_cb(grl->tree, info);
@@ -265,12 +281,14 @@
static void row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *arg2,
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; PurpleRoomlistRoom *room;
struct _menu_cb_info info;
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); gtk_tree_model_get_iter(GTK_TREE_MODEL(grl->model), &iter, path);
gtk_tree_model_get_value(GTK_TREE_MODEL(grl->model), &iter, ROOM_COLUMN, &val);
@@ -287,7 +305,7 @@
static gboolean room_click_cb(GtkWidget *tv, GdkEventButton *event, PurpleRoomlist *list)
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; PurpleRoomlistRoom *room;
@@ -297,6 +315,8 @@
if (!gdk_event_triggers_context_menu((GdkEvent *)event))
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); /* Here we figure out which room was clicked */
if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), event->x, event->y, &path, NULL, NULL, NULL))
@@ -347,12 +367,15 @@
pidgin_roomlist_paint_tooltip(GtkWidget *widget, cairo_t *cr, gpointer user_data)
PurpleRoomlist *list = user_data;
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; int current_height, max_width;
- GtkTextDirection dir = gtk_widget_get_direction(GTK_WIDGET(grl->tree));
GtkStyleContext *context;
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); + dir = gtk_widget_get_direction(GTK_WIDGET(grl->tree)); context = gtk_widget_get_style_context(grl->tipwindow);
gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOOLTIP);
@@ -389,7 +412,7 @@
static gboolean pidgin_roomlist_create_tip(PurpleRoomlist *list, GtkTreePath *path)
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; PurpleRoomlistRoom *room;
@@ -399,6 +422,8 @@
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); if (!gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tv), grl->tip_rect.x, grl->tip_rect.y + (grl->tip_rect.height/2),
&path, NULL, NULL, NULL))
@@ -478,7 +503,9 @@
gpointer data, int *w, int *h)
PurpleRoomlist *list = data;
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; + grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); if (!pidgin_roomlist_create_tip(data, path))
@@ -607,7 +634,7 @@
PidginRoomlist *rl = g_new0(PidginRoomlist, 1);
- purple_roomlist_set_ui_data(list, rl);
+ g_object_set_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA, rl); rl->cats = g_hash_table_new_full(NULL, NULL, NULL, (GDestroyNotify)gtk_tree_row_reference_free);
@@ -670,7 +697,7 @@
static void pidgin_roomlist_set_fields(PurpleRoomlist *list, GList *fields)
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL; gint columns = NUM_OF_COLUMNS;
@@ -681,6 +708,7 @@
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); g_return_if_fail(grl != NULL);
columns += g_list_length(fields);
@@ -774,8 +802,9 @@
static gboolean pidgin_progress_bar_pulse(gpointer data)
PurpleRoomlist *list = data;
- PidginRoomlist *rl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *rl = NULL; + rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); if (!rl || !rl->dialog || !rl->dialog->pg_needs_pulse) {
rl->dialog->pg_update_to = 0;
@@ -790,7 +819,7 @@
static void pidgin_roomlist_add_room(PurpleRoomlist *list, PurpleRoomlistRoom *room)
- PidginRoomlist *rl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *rl = NULL; GtkTreeRowReference *rr, *parentrr = NULL;
GtkTreeIter iter, parent, child;
@@ -798,6 +827,8 @@
+ rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); if (purple_roomlist_room_get_room_type(room) == PURPLE_ROOMLIST_ROOMTYPE_ROOM)
@@ -862,8 +893,9 @@
static void pidgin_roomlist_in_progress(PurpleRoomlist *list, gboolean in_progress)
- PidginRoomlist *rl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *rl = NULL; + rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); @@ -884,7 +916,9 @@
static void pidgin_roomlist_destroy(PurpleRoomlist *list)
- PidginRoomlist *rl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *rl = NULL; + rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA); roomlists = g_list_remove(roomlists, list);
@@ -892,7 +926,7 @@
g_hash_table_destroy(rl->cats);
- purple_roomlist_set_ui_data(list, NULL);
+ g_object_set_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA, NULL); static PurpleRoomlistUiOps ops = {