diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 7fe161d1aa6dbde3535ddada33cc7b987962acc7..d1b1eb2180111ed307ea986a03071e468c267ca7 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -1607,6 +1607,7 @@ static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress) GList *fields = purple_roomlist_get_fields(list); GList *field; int topicId = -1; + int usersId = -1; int id = 0; for (field = fields; field != NULL; field = field->next, id++) { PurpleRoomlistField *f = (PurpleRoomlistField *) field->data; @@ -1617,13 +1618,14 @@ static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress) if (fstring == "topic") { topicId = id; } + else if (fstring == "users") { + usersId = id; + } else { LOG4CXX_INFO(logger, "Uknown RoomList field " << fstring); } } - LOG4CXX_INFO(logger, "RoomList topic ID: " << topicId); - GList *rooms; std::list m_rooms; std::list m_topics; @@ -1640,8 +1642,20 @@ static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress) m_topics.push_back(topic); } else { - LOG4CXX_WARN(logger, "RoomList topic is NULL"); - m_topics.push_back(room->name); + if (usersId) { + char *users = (char *) g_list_nth_data(purple_roomlist_room_get_fields(room), usersId); + if (users) { + m_topics.push_back(users); + } + else { + LOG4CXX_WARN(logger, "RoomList topic and users is NULL"); + m_topics.push_back(room->name); + } + } + else { + LOG4CXX_WARN(logger, "RoomList topic is NULL"); + m_topics.push_back(room->name); + } } } }