diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-27 21:40:56 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2021-01-27 21:40:56 -0500 |
commit | 29bc297a7c70b9cfc02b0f99fc0942611568c421 (patch) | |
tree | b99252e8d86f211de76638fc853c2ada2a762952 | |
parent | a83e969b8650d8faf7587a867abba0304cd75440 (diff) | |
download | abaddon-portaudio-29bc297a7c70b9cfc02b0f99fc0942611568c421.tar.gz abaddon-portaudio-29bc297a7c70b9cfc02b0f99fc0942611568c421.zip |
cap member list rows cuz it can get way out of hand
-rw-r--r-- | components/memberlist.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/components/memberlist.cpp b/components/memberlist.cpp index be7e074..5dfc26a 100644 --- a/components/memberlist.cpp +++ b/components/memberlist.cpp @@ -4,6 +4,8 @@ #include "lazyimage.hpp" #include "statusindicator.hpp" +constexpr static const int MaxMemberListRows = 200; + MemberListUserRow::MemberListUserRow(Snowflake guild_id, const UserData *data) { ID = data->ID; m_ev = Gtk::manage(new Gtk::EventBox); @@ -137,11 +139,14 @@ void MemberList::UpdateMemberList() { 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)); m_id_to_row[data->ID] = row; AttachUserMenuHandler(row, data->ID); m_listbox->add(*row); + return true; }; 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; }); for (const auto data : users) - add_user(&data); + if (!add_user(&data)) return; } if (chan->Type == ChannelType::DM || chan->Type == ChannelType::GROUP_DM) @@ -184,7 +189,7 @@ void MemberList::UpdateMemberList() { for (const auto &id : roleless_users) { const auto user = discord.GetUser(id); if (user.has_value()) - add_user(&*user); + if (!add_user(&*user)) return; } } |