update channel list selection when channel mention is clicked

This commit is contained in:
ouwou
2020-11-01 00:13:52 -04:00
parent 90ea3c55cc
commit ec8117a24b
5 changed files with 13 additions and 4 deletions

View File

@@ -63,7 +63,7 @@ int Abaddon::StartGTK() {
m_main_window->signal_action_reload_css().connect(sigc::mem_fun(*this, &Abaddon::ActionReloadCSS)); m_main_window->signal_action_reload_css().connect(sigc::mem_fun(*this, &Abaddon::ActionReloadCSS));
m_main_window->signal_action_join_guild().connect(sigc::mem_fun(*this, &Abaddon::ActionJoinGuildDialog)); m_main_window->signal_action_join_guild().connect(sigc::mem_fun(*this, &Abaddon::ActionJoinGuildDialog));
m_main_window->GetChannelList()->signal_action_channel_item_select().connect(sigc::mem_fun(*this, &Abaddon::ActionListChannelItemClick)); m_main_window->GetChannelList()->signal_action_channel_item_select().connect(sigc::mem_fun(*this, &Abaddon::ActionChannelOpened));
m_main_window->GetChannelList()->signal_action_guild_move_up().connect(sigc::mem_fun(*this, &Abaddon::ActionMoveGuildUp)); m_main_window->GetChannelList()->signal_action_guild_move_up().connect(sigc::mem_fun(*this, &Abaddon::ActionMoveGuildUp));
m_main_window->GetChannelList()->signal_action_guild_move_down().connect(sigc::mem_fun(*this, &Abaddon::ActionMoveGuildDown)); m_main_window->GetChannelList()->signal_action_guild_move_down().connect(sigc::mem_fun(*this, &Abaddon::ActionMoveGuildDown));
m_main_window->GetChannelList()->signal_action_guild_leave().connect(sigc::mem_fun(*this, &Abaddon::ActionLeaveGuild)); m_main_window->GetChannelList()->signal_action_guild_leave().connect(sigc::mem_fun(*this, &Abaddon::ActionLeaveGuild));
@@ -72,7 +72,7 @@ int Abaddon::StartGTK() {
m_main_window->GetChatWindow()->signal_action_message_edit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatEditMessage)); m_main_window->GetChatWindow()->signal_action_message_edit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatEditMessage));
m_main_window->GetChatWindow()->signal_action_chat_submit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatInputSubmit)); m_main_window->GetChatWindow()->signal_action_chat_submit().connect(sigc::mem_fun(*this, &Abaddon::ActionChatInputSubmit));
m_main_window->GetChatWindow()->signal_action_chat_load_history().connect(sigc::mem_fun(*this, &Abaddon::ActionChatLoadHistory)); m_main_window->GetChatWindow()->signal_action_chat_load_history().connect(sigc::mem_fun(*this, &Abaddon::ActionChatLoadHistory));
m_main_window->GetChatWindow()->signal_action_channel_click().connect(sigc::mem_fun(*this, &Abaddon::ActionListChannelItemClick)); // rename me m_main_window->GetChatWindow()->signal_action_channel_click().connect(sigc::mem_fun(*this, &Abaddon::ActionChannelOpened));
m_main_window->GetChatWindow()->signal_action_insert_mention().connect(sigc::mem_fun(*this, &Abaddon::ActionInsertMention)); m_main_window->GetChatWindow()->signal_action_insert_mention().connect(sigc::mem_fun(*this, &Abaddon::ActionInsertMention));
m_main_window->GetMemberList()->signal_action_insert_mention().connect(sigc::mem_fun(*this, &Abaddon::ActionInsertMention)); m_main_window->GetMemberList()->signal_action_insert_mention().connect(sigc::mem_fun(*this, &Abaddon::ActionInsertMention));
@@ -255,7 +255,7 @@ void Abaddon::ActionMoveGuildDown(Snowflake id) {
m_discord.UpdateSettingsGuildPositions(order); m_discord.UpdateSettingsGuildPositions(order);
} }
void Abaddon::ActionListChannelItemClick(Snowflake id) { void Abaddon::ActionChannelOpened(Snowflake id) {
if (id == m_main_window->GetChatActiveChannel()) return; if (id == m_main_window->GetChatActiveChannel()) return;
auto *channel = m_discord.GetChannel(id); auto *channel = m_discord.GetChannel(id);

View File

@@ -35,7 +35,7 @@ public:
void ActionJoinGuildDialog(); void ActionJoinGuildDialog();
void ActionMoveGuildUp(Snowflake id); void ActionMoveGuildUp(Snowflake id);
void ActionMoveGuildDown(Snowflake id); void ActionMoveGuildDown(Snowflake id);
void ActionListChannelItemClick(Snowflake id); void ActionChannelOpened(Snowflake id);
void ActionChatInputSubmit(std::string msg, Snowflake channel); void ActionChatInputSubmit(std::string msg, Snowflake channel);
void ActionChatLoadHistory(Snowflake id); void ActionChatLoadHistory(Snowflake id);
void ActionChatDeleteMessage(Snowflake channel_id, Snowflake id); void ActionChatDeleteMessage(Snowflake channel_id, Snowflake id);

View File

@@ -414,6 +414,12 @@ void ChannelList::Clear() {
m_update_dispatcher.emit(); m_update_dispatcher.emit();
} }
void ChannelList::SetActiveChannel(Snowflake id) {
auto it = m_id_to_row.find(id);
if (it == m_id_to_row.end()) return;
m_list->select_row(*it->second);
}
void ChannelList::CollapseRow(ChannelListRow *row) { void ChannelList::CollapseRow(ChannelListRow *row) {
row->Collapse(); row->Collapse();
for (auto child : row->Children) { for (auto child : row->Children) {

View File

@@ -94,6 +94,8 @@ public:
void UpdateGuild(Snowflake id); void UpdateGuild(Snowflake id);
void Clear(); void Clear();
void SetActiveChannel(Snowflake id);
protected: protected:
Gtk::ListBox *m_list; Gtk::ListBox *m_list;
Gtk::ScrolledWindow *m_main; Gtk::ScrolledWindow *m_main;

View File

@@ -160,6 +160,7 @@ void MainWindow::UpdateChatActiveChannel(Snowflake id) {
auto &discord = Abaddon::Get().GetDiscordClient(); auto &discord = Abaddon::Get().GetDiscordClient();
m_chat.SetActiveChannel(id); m_chat.SetActiveChannel(id);
m_members.SetActiveChannel(id); m_members.SetActiveChannel(id);
m_channel_list.SetActiveChannel(id);
} }
Snowflake MainWindow::GetChatActiveChannel() const { Snowflake MainWindow::GetChatActiveChannel() const {