diff options
Diffstat (limited to 'src/windows')
-rw-r--r-- | src/windows/mainwindow.cpp | 42 | ||||
-rw-r--r-- | src/windows/mainwindow.hpp | 11 |
2 files changed, 49 insertions, 4 deletions
diff --git a/src/windows/mainwindow.cpp b/src/windows/mainwindow.cpp index edd485d..b77981c 100644 --- a/src/windows/mainwindow.cpp +++ b/src/windows/mainwindow.cpp @@ -27,6 +27,12 @@ MainWindow::MainWindow() chat->set_hexpand(true); chat->show(); +#ifdef WITH_LIBHANDY + m_channel_list.signal_action_open_new_tab().connect([this](Snowflake id) { + m_chat.OpenNewTab(id); + }); +#endif + m_channel_list.set_vexpand(true); m_channel_list.set_size_request(-1, -1); m_channel_list.show(); @@ -99,10 +105,10 @@ void MainWindow::UpdateChatWindowContents() { m_members.UpdateMemberList(); } -void MainWindow::UpdateChatActiveChannel(Snowflake id) { +void MainWindow::UpdateChatActiveChannel(Snowflake id, bool expand_to) { m_chat.SetActiveChannel(id); m_members.SetActiveChannel(id); - m_channel_list.SetActiveChannel(id); + m_channel_list.SetActiveChannel(id, expand_to); m_content_stack.set_visible_child("chat"); } @@ -151,6 +157,16 @@ void MainWindow::UpdateMenus() { OnViewSubmenuPopup(); } +#ifdef WITH_LIBHANDY +void MainWindow::GoBack() { + m_chat.GoBack(); +} + +void MainWindow::GoForward() { + m_chat.GoForward(); +} +#endif + void MainWindow::OnDiscordSubmenuPopup() { auto &discord = Abaddon::Get().GetDiscordClient(); auto channel_id = GetChatActiveChannel(); @@ -236,10 +252,20 @@ void MainWindow::SetupMenu() { m_menu_view_threads.set_label("Threads"); m_menu_view_mark_guild_as_read.set_label("Mark Server as Read"); m_menu_view_mark_guild_as_read.add_accelerator("activate", m_accels, GDK_KEY_Escape, Gdk::SHIFT_MASK, Gtk::ACCEL_VISIBLE); +#ifdef WITH_LIBHANDY + m_menu_view_go_back.set_label("Go Back"); + m_menu_view_go_forward.set_label("Go Forward"); + m_menu_view_go_back.add_accelerator("activate", m_accels, GDK_KEY_Left, Gdk::MOD1_MASK, Gtk::ACCEL_VISIBLE); + m_menu_view_go_forward.add_accelerator("activate", m_accels, GDK_KEY_Right, Gdk::MOD1_MASK, Gtk::ACCEL_VISIBLE); +#endif m_menu_view_sub.append(m_menu_view_friends); m_menu_view_sub.append(m_menu_view_pins); m_menu_view_sub.append(m_menu_view_threads); m_menu_view_sub.append(m_menu_view_mark_guild_as_read); +#ifdef WITH_LIBHANDY + m_menu_view_sub.append(m_menu_view_go_back); + m_menu_view_sub.append(m_menu_view_go_forward); +#endif m_menu_bar.append(m_menu_file); m_menu_bar.append(m_menu_discord); @@ -279,7 +305,7 @@ void MainWindow::SetupMenu() { }); m_menu_view_friends.signal_activate().connect([this] { - UpdateChatActiveChannel(Snowflake::Invalid); + UpdateChatActiveChannel(Snowflake::Invalid, true); m_members.UpdateMemberList(); m_content_stack.set_visible_child("friends"); }); @@ -300,6 +326,16 @@ void MainWindow::SetupMenu() { discord.MarkGuildAsRead(*channel->GuildID, NOOP_CALLBACK); } }); + +#ifdef WITH_LIBHANDY + m_menu_view_go_back.signal_activate().connect([this] { + GoBack(); + }); + + m_menu_view_go_forward.signal_activate().connect([this] { + GoForward(); + }); +#endif } MainWindow::type_signal_action_connect MainWindow::signal_action_connect() { diff --git a/src/windows/mainwindow.hpp b/src/windows/mainwindow.hpp index 0932af5..ce3a576 100644 --- a/src/windows/mainwindow.hpp +++ b/src/windows/mainwindow.hpp @@ -13,7 +13,7 @@ public: void UpdateMembers(); void UpdateChannelListing(); void UpdateChatWindowContents(); - void UpdateChatActiveChannel(Snowflake id); + void UpdateChatActiveChannel(Snowflake id, bool expand_to); Snowflake GetChatActiveChannel() const; void UpdateChatNewMessage(const Message &data); void UpdateChatMessageDeleted(Snowflake id, Snowflake channel_id); @@ -25,6 +25,11 @@ public: void UpdateChatReactionRemove(Snowflake id, const Glib::ustring ¶m); void UpdateMenus(); +#ifdef WITH_LIBHANDY + void GoBack(); + void GoForward(); +#endif + ChannelList *GetChannelList(); ChatWindow *GetChatWindow(); MemberList *GetMemberList(); @@ -68,6 +73,10 @@ private: Gtk::MenuItem m_menu_view_pins; Gtk::MenuItem m_menu_view_threads; Gtk::MenuItem m_menu_view_mark_guild_as_read; +#ifdef WITH_LIBHANDY + Gtk::MenuItem m_menu_view_go_back; + Gtk::MenuItem m_menu_view_go_forward; +#endif void OnViewSubmenuPopup(); public: |