diff options
-rw-r--r-- | abaddon.cpp | 6 | ||||
-rw-r--r-- | abaddon.hpp | 2 | ||||
-rw-r--r-- | components/channels.cpp | 6 | ||||
-rw-r--r-- | components/channels.hpp | 2 | ||||
-rw-r--r-- | windows/mainwindow.cpp | 1 |
5 files changed, 13 insertions, 4 deletions
diff --git a/abaddon.cpp b/abaddon.cpp index b1e8991..30ee8b5 100644 --- a/abaddon.cpp +++ b/abaddon.cpp @@ -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_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_down().connect(sigc::mem_fun(*this, &Abaddon::ActionMoveGuildDown)); 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_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_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->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); } -void Abaddon::ActionListChannelItemClick(Snowflake id) { +void Abaddon::ActionChannelOpened(Snowflake id) { if (id == m_main_window->GetChatActiveChannel()) return; auto *channel = m_discord.GetChannel(id); diff --git a/abaddon.hpp b/abaddon.hpp index 1c6e931..1727ee4 100644 --- a/abaddon.hpp +++ b/abaddon.hpp @@ -35,7 +35,7 @@ public: void ActionJoinGuildDialog(); void ActionMoveGuildUp(Snowflake id); void ActionMoveGuildDown(Snowflake id); - void ActionListChannelItemClick(Snowflake id); + void ActionChannelOpened(Snowflake id); void ActionChatInputSubmit(std::string msg, Snowflake channel); void ActionChatLoadHistory(Snowflake id); void ActionChatDeleteMessage(Snowflake channel_id, Snowflake id); diff --git a/components/channels.cpp b/components/channels.cpp index fc409ad..a8f2f66 100644 --- a/components/channels.cpp +++ b/components/channels.cpp @@ -414,6 +414,12 @@ void ChannelList::Clear() { 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) { row->Collapse(); for (auto child : row->Children) { diff --git a/components/channels.hpp b/components/channels.hpp index 6c6997a..012891f 100644 --- a/components/channels.hpp +++ b/components/channels.hpp @@ -94,6 +94,8 @@ public: void UpdateGuild(Snowflake id); void Clear(); + void SetActiveChannel(Snowflake id); + protected: Gtk::ListBox *m_list; Gtk::ScrolledWindow *m_main; diff --git a/windows/mainwindow.cpp b/windows/mainwindow.cpp index 0bd969d..bfd9402 100644 --- a/windows/mainwindow.cpp +++ b/windows/mainwindow.cpp @@ -160,6 +160,7 @@ void MainWindow::UpdateChatActiveChannel(Snowflake id) { auto &discord = Abaddon::Get().GetDiscordClient(); m_chat.SetActiveChannel(id); m_members.SetActiveChannel(id); + m_channel_list.SetActiveChannel(id); } Snowflake MainWindow::GetChatActiveChannel() const { |