diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index cfa64e7860569718360a0f53f566f1492499f1b9..0815c2ba5d5a535c808f8d3d0fba3e48fc7a7eb1 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -1947,9 +1947,15 @@ static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress) GList *rooms; std::list m_topics; + PurplePlugin *plugin = purple_find_prpl_wrapped(purple_account_get_protocol_id_wrapped(list->account)); + PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin); for (rooms = list->rooms; rooms != NULL; rooms = rooms->next) { PurpleRoomlistRoom *room = (PurpleRoomlistRoom *)rooms->data; - np->m_rooms[np->m_accounts[list->account]].push_back(room->name); + if (room->type == PURPLE_ROOMLIST_ROOMTYPE_CATEGORY) continue; + std::string roomId = prpl_info && prpl_info->roomlist_room_serialize ? + prpl_info->roomlist_room_serialize(room) + : room->name; + np->m_rooms[np->m_accounts[list->account]].push_back(roomId); if (topicId == -1) { m_topics.push_back(room->name);