summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2020-11-01 00:13:52 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2020-11-01 00:13:52 -0400
commitec8117a24b129b957a45f6f142221143b0f059a0 (patch)
tree848b71a0ab01a387ab2cc20b2d61f679ccff2697
parent90ea3c55cc81faf223e203208d95d1fa06ca6dbf (diff)
downloadabaddon-portaudio-ec8117a24b129b957a45f6f142221143b0f059a0.tar.gz
abaddon-portaudio-ec8117a24b129b957a45f6f142221143b0f059a0.zip
update channel list selection when channel mention is clicked
-rw-r--r--abaddon.cpp6
-rw-r--r--abaddon.hpp2
-rw-r--r--components/channels.cpp6
-rw-r--r--components/channels.hpp2
-rw-r--r--windows/mainwindow.cpp1
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 {