forked from OpenGamers/abaddon
cap member list rows cuz it can get way out of hand
This commit is contained in:
@@ -4,6 +4,8 @@
|
|||||||
#include "lazyimage.hpp"
|
#include "lazyimage.hpp"
|
||||||
#include "statusindicator.hpp"
|
#include "statusindicator.hpp"
|
||||||
|
|
||||||
|
constexpr static const int MaxMemberListRows = 200;
|
||||||
|
|
||||||
MemberListUserRow::MemberListUserRow(Snowflake guild_id, const UserData *data) {
|
MemberListUserRow::MemberListUserRow(Snowflake guild_id, const UserData *data) {
|
||||||
ID = data->ID;
|
ID = data->ID;
|
||||||
m_ev = Gtk::manage(new Gtk::EventBox);
|
m_ev = Gtk::manage(new Gtk::EventBox);
|
||||||
@@ -137,11 +139,14 @@ void MemberList::UpdateMemberList() {
|
|||||||
user_to_color[id] = col_role->Color;
|
user_to_color[id] = col_role->Color;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto add_user = [this, &user_to_color](const UserData *data) {
|
int num_rows = 0;
|
||||||
|
auto add_user = [this, &user_to_color, &num_rows](const UserData *data) -> bool {
|
||||||
|
if (num_rows++ > MaxMemberListRows) return false;
|
||||||
auto *row = Gtk::manage(new MemberListUserRow(m_guild_id, data));
|
auto *row = Gtk::manage(new MemberListUserRow(m_guild_id, data));
|
||||||
m_id_to_row[data->ID] = row;
|
m_id_to_row[data->ID] = row;
|
||||||
AttachUserMenuHandler(row, data->ID);
|
AttachUserMenuHandler(row, data->ID);
|
||||||
m_listbox->add(*row);
|
m_listbox->add(*row);
|
||||||
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto add_role = [this](std::string name) {
|
auto add_role = [this](std::string name) {
|
||||||
@@ -174,7 +179,7 @@ void MemberList::UpdateMemberList() {
|
|||||||
AlphabeticalSort(users.begin(), users.end(), [](const auto &e) { return e.Username; });
|
AlphabeticalSort(users.begin(), users.end(), [](const auto &e) { return e.Username; });
|
||||||
|
|
||||||
for (const auto data : users)
|
for (const auto data : users)
|
||||||
add_user(&data);
|
if (!add_user(&data)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (chan->Type == ChannelType::DM || chan->Type == ChannelType::GROUP_DM)
|
if (chan->Type == ChannelType::DM || chan->Type == ChannelType::GROUP_DM)
|
||||||
@@ -184,7 +189,7 @@ void MemberList::UpdateMemberList() {
|
|||||||
for (const auto &id : roleless_users) {
|
for (const auto &id : roleless_users) {
|
||||||
const auto user = discord.GetUser(id);
|
const auto user = discord.GetUser(id);
|
||||||
if (user.has_value())
|
if (user.has_value())
|
||||||
add_user(&*user);
|
if (!add_user(&*user)) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user