pidgin/pidgin

Parents d7f0dd7ba01e
Children f0a12e3048a4
Replace purple_roomlist_[gs]et_ui_data with g_object_[gs]et_data

Testing Done:
Verified the room list still works in Pidgin but couldn't test Finch as I couldn't add an account.

Reviewed at https://reviews.imfreedom.org/r/687/
--- a/ChangeLog.API Sat May 29 03:23:01 2021 -0500
+++ b/ChangeLog.API Sun May 30 17:20:19 2021 -0500
@@ -57,11 +57,9 @@
* purple_request_fields_set_ui_data
* purple_roomlist_get_account
* purple_roomlist_get_proto_data
- * purple_roomlist_get_ui_data
* purple_roomlist_room_get_expanded_once
* purple_roomlist_room_set_expanded_once
* purple_roomlist_set_proto_data
- * purple_roomlist_set_ui_data
* purple_time_parse_month
* purple_whiteboard_get_account
* purple_whiteboard_get_draw_list
--- a/finch/gntroomlist.c Sat May 29 03:23:01 2021 -0500
+++ b/finch/gntroomlist.c Sun May 30 17:20:19 2021 -0500
@@ -335,7 +335,7 @@
static void
fl_create(PurpleRoomlist *list)
{
- purple_roomlist_set_ui_data(list, &froomlist);
+ g_object_set_data(G_OBJECT(list), "finch-ui", &froomlist);
setup_roomlist(NULL);
update_roomlist(list);
}
--- a/libpurple/roomlist.c Sat May 29 03:23:01 2021 -0500
+++ b/libpurple/roomlist.c Sun May 30 17:20:19 2021 -0500
@@ -244,20 +244,6 @@
priv->proto_data = proto_data;
}
-gpointer purple_roomlist_get_ui_data(PurpleRoomlist *list)
-{
- g_return_val_if_fail(PURPLE_IS_ROOMLIST(list), NULL);
-
- return list->ui_data;
-}
-
-void purple_roomlist_set_ui_data(PurpleRoomlist *list, gpointer ui_data)
-{
- g_return_if_fail(PURPLE_IS_ROOMLIST(list));
-
- list->ui_data = ui_data;
-}
-
/**************************************************************************/
/* Room List GObject code */
/**************************************************************************/
--- a/libpurple/roomlist.h Sat May 29 03:23:01 2021 -0500
+++ b/libpurple/roomlist.h Sun May 30 17:20:19 2021 -0500
@@ -138,16 +138,11 @@
/**
* PurpleRoomlist:
- * @ui_data: The UI data associated with this room list. This is a convenience
- * field provided to the UIs -- it is not used by the libpurple core.
*
* Represents a list of rooms for a given connection on a given protocol.
*/
struct _PurpleRoomlist {
GObject gparent;
-
- /*< public >*/
- gpointer ui_data;
};
G_BEGIN_DECLS
@@ -313,27 +308,6 @@
*/
void purple_roomlist_set_protocol_data(PurpleRoomlist *list, gpointer proto_data);
-/**
- * purple_roomlist_get_ui_data:
- * @list: The roomlist, which must not be %NULL.
- *
- * Get the UI data associated with this room list.
- *
- * Returns: The UI data associated with this room list. This is a
- * convenience field provided to the UIs--it is not
- * used by the libpurple core.
- */
-gpointer purple_roomlist_get_ui_data(PurpleRoomlist *list);
-
-/**
- * purple_roomlist_set_ui_data:
- * @list: The roomlist, which must not be %NULL.
- * @ui_data: A pointer to associate with this room list.
- *
- * Set the UI data associated with this room list.
- */
-void purple_roomlist_set_ui_data(PurpleRoomlist *list, gpointer ui_data);
-
/**************************************************************************/
/* Protocol Roomlist Interface API */
/**************************************************************************/
--- 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 {
GtkDialog parent;
@@ -93,7 +95,10 @@
g_source_remove(dialog->pg_update_to);
if (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);
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);
if (rl->tree) {
gtk_widget_destroy(rl->tree);
rl->tree = NULL;
@@ -137,7 +145,9 @@
return;
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 @@
if (!dialog->roomlist)
return;
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);
rl->dialog = dialog;
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);
+
if(info != NULL)
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);
+
if(info != NULL)
do_join_cb(grl->tree, info);
}
@@ -265,12 +281,14 @@
static void row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *arg2,
PurpleRoomlist *list)
{
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL;
GtkTreeIter iter;
PurpleRoomlistRoom *room;
GValue val;
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);
val.g_type = 0;
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)
{
GtkTreePath *path;
- PidginRoomlist *grl = purple_roomlist_get_ui_data(list);
+ PidginRoomlist *grl = NULL;
GValue val;
PurpleRoomlistRoom *room;
GtkTreeIter iter;
@@ -297,6 +315,8 @@
if (!gdk_event_triggers_context_menu((GdkEvent *)event))
return FALSE;
+ 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))
return FALSE;
@@ -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;
int max_text_width;
- GtkTextDirection dir = gtk_widget_get_direction(GTK_WIDGET(grl->tree));
+ GtkTextDirection dir;
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;
GtkTreeIter iter;
GValue val;
@@ -399,6 +422,8 @@
gint j;
gboolean first = TRUE;
+ grl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA);
+
#if 0
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);
grl->tipwindow = widget;
if (!pidgin_roomlist_create_tip(data, path))
return FALSE;
@@ -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;
int j;
GtkTreeStore *model;
@@ -681,6 +708,7 @@
GList *l;
GType *types;
+ 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) {
if (rl && rl->dialog)
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;
GtkTreePath *path;
GtkTreeIter iter, parent, child;
@@ -798,6 +827,8 @@
int j;
gboolean append = TRUE;
+ rl = g_object_get_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA);
+
rl->total_rooms++;
if (purple_roomlist_room_get_room_type(room) == PURPLE_ROOMLIST_ROOMTYPE_ROOM)
rl->num_rooms++;
@@ -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);
if (!rl || !rl->dialog)
return;
@@ -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);
g_free(rl);
- purple_roomlist_set_ui_data(list, NULL);
+ g_object_set_data(G_OBJECT(list), PIDGIN_ROOMLIST_UI_DATA, NULL);
}
static PurpleRoomlistUiOps ops = {