pidgin/gtkroomlist.c

changeset 41857
ff94f8ff8a70
parent 41854
c1d7e7445b0f
child 41947
7b3312d0760c
--- a/pidgin/gtkroomlist.c	Sat Oct 29 00:08:34 2022 -0500
+++ b/pidgin/gtkroomlist.c	Sat Oct 29 00:52:04 2022 -0500
@@ -444,13 +444,17 @@
 	return TRUE;
 }
 
-static gboolean account_filter_func(PurpleAccount *account)
-{
-	PurpleConnection *conn = purple_account_get_connection(account);
+static gboolean
+account_filter_func(gpointer item, G_GNUC_UNUSED gpointer data) {
 	PurpleProtocol *protocol = NULL;
 
-	if (conn && PURPLE_CONNECTION_IS_CONNECTED(conn))
-		protocol = purple_connection_get_protocol(conn);
+	if(PURPLE_IS_ACCOUNT(item)) {
+		PurpleAccount *account = PURPLE_ACCOUNT(item);
+		PurpleConnection *conn = purple_account_get_connection(account);
+		if(conn && PURPLE_CONNECTION_IS_CONNECTED(conn)) {
+			protocol = purple_connection_get_protocol(conn);
+		}
+	}
 
 	return (protocol && PURPLE_PROTOCOL_IMPLEMENTS(protocol, ROOMLIST, get_list));
 }
@@ -464,8 +468,9 @@
 	for (c = purple_connections_get_all(); c != NULL; c = c->next) {
 		gc = c->data;
 
-		if (account_filter_func(purple_connection_get_account(gc)))
+		if(account_filter_func(purple_connection_get_account(gc), NULL)) {
 			return TRUE;
+		}
 	}
 
 	return FALSE;
@@ -517,12 +522,15 @@
 pidgin_roomlist_dialog_init(PidginRoomlistDialog *self)
 {
 	GSimpleActionGroup *group = NULL;
+	GtkCustomFilter *filter = NULL;
 
 	gtk_widget_init_template(GTK_WIDGET(self));
 
-	pidgin_account_chooser_set_filter_func(
+	filter = gtk_custom_filter_new(account_filter_func, NULL, NULL);
+	pidgin_account_chooser_set_filter(
 	        PIDGIN_ACCOUNT_CHOOSER(self->account_widget),
-	        account_filter_func);
+	        GTK_FILTER(filter));
+	g_object_unref(filter);
 
 	gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(self->tree),
 	                                    _search_func, NULL, NULL);

mercurial