pidgin/gtkblist.c

changeset 41857
ff94f8ff8a70
parent 41840
fe350460fb1c
child 41862
0cb7833d756b
--- a/pidgin/gtkblist.c	Sat Oct 29 00:08:34 2022 -0500
+++ b/pidgin/gtkblist.c	Sat Oct 29 00:52:04 2022 -0500
@@ -948,13 +948,18 @@
 }
 
 static gboolean
-chat_account_filter_func(PurpleAccount *account)
-{
-	PurpleConnection *gc = purple_account_get_connection(account);
+chat_account_filter_func(gpointer item, G_GNUC_UNUSED gpointer data) {
+	PurpleConnection *gc = NULL;
 	PurpleProtocol *protocol = NULL;
 
-	if (gc == NULL)
+	if(!PURPLE_IS_ACCOUNT(item)) {
 		return FALSE;
+	}
+
+	gc = purple_account_get_connection(PURPLE_ACCOUNT(item));
+	if(gc == NULL) {
+		return FALSE;
+	}
 
 	protocol = purple_connection_get_protocol(gc);
 
@@ -970,8 +975,9 @@
 	for (c = purple_connections_get_all(); c != NULL; c = c->next) {
 		gc = c->data;
 
-		if (chat_account_filter_func(purple_connection_get_account(gc)))
+		if(chat_account_filter_func(purple_connection_get_account(gc), NULL)) {
 			return TRUE;
+		}
 	}
 
 	return FALSE;
@@ -980,7 +986,7 @@
 static void
 make_blist_request_dialog(PidginBlistRequestData *data, PurpleAccount *account,
 	const char *title, const char *window_role, const char *label_text,
-	GCallback callback_func, PurpleFilterAccountFunc filter_func,
+	GCallback callback_func, GtkCustomFilterFunc filter_func,
 	GCallback response_cb)
 {
 	GtkWidget *label;
@@ -990,6 +996,7 @@
 	GtkWidget *vbox;
 	GtkWindow *blist_window;
 	GtkTreeModel *model = NULL, *filter = NULL;
+	GtkCustomFilter *custom_filter = NULL;
 	PidginBuddyList *gtkblist;
 
 	data->account = account;
@@ -1040,8 +1047,12 @@
 		gtk_combo_box_set_active(GTK_COMBO_BOX(data->account_menu), 0);
 	}
 
-	pidgin_account_chooser_set_filter_func(
-	        PIDGIN_ACCOUNT_CHOOSER(data->account_menu), filter_func);
+	custom_filter = gtk_custom_filter_new(filter_func, NULL, NULL);
+	pidgin_account_chooser_set_filter(
+	        PIDGIN_ACCOUNT_CHOOSER(data->account_menu),
+	        GTK_FILTER(custom_filter));
+	g_object_unref(custom_filter);
+
 	pidgin_add_widget_to_vbox(GTK_BOX(vbox), _("A_ccount"), data->sg, data->account_menu, TRUE, NULL);
 	g_signal_connect(data->account_menu, "changed",
 	                 G_CALLBACK(callback_func), data);

mercurial