From bbf32730cd322ab8d826b9fb73d83fbde73c5419 Mon Sep 17 00:00:00 2001 From: ouwou <26526779+ouwou@users.noreply.github.com> Date: Mon, 9 May 2022 01:33:09 -0400 Subject: add ctrl(+shift)+tab keybinds --- src/components/channeltabswitcherhandy.cpp | 16 ++++++++++++++++ src/components/channeltabswitcherhandy.hpp | 2 ++ src/components/chatwindow.cpp | 8 ++++++++ src/components/chatwindow.hpp | 2 ++ 4 files changed, 28 insertions(+) (limited to 'src/components') diff --git a/src/components/channeltabswitcherhandy.cpp b/src/components/channeltabswitcherhandy.cpp index 67dbff0..2faa2e2 100644 --- a/src/components/channeltabswitcherhandy.cpp +++ b/src/components/channeltabswitcherhandy.cpp @@ -115,6 +115,22 @@ void ChannelTabSwitcherHandy::GoForwardOnCurrent() { AdvanceOnCurrent(1); } +void ChannelTabSwitcherHandy::GoToPreviousTab() { + if (!hdy_tab_view_select_previous_page(m_tab_view)) { + if (const auto num_pages = hdy_tab_view_get_n_pages(m_tab_view); num_pages > 1) { + hdy_tab_view_set_selected_page(m_tab_view, hdy_tab_view_get_nth_page(m_tab_view, num_pages - 1)); + } + } +} + +void ChannelTabSwitcherHandy::GoToNextTab() { + if (!hdy_tab_view_select_next_page(m_tab_view)) { + if (hdy_tab_view_get_n_pages(m_tab_view) > 1) { + hdy_tab_view_set_selected_page(m_tab_view, hdy_tab_view_get_nth_page(m_tab_view, 0)); + } + } +} + int ChannelTabSwitcherHandy::GetNumberOfTabs() const { return hdy_tab_view_get_n_pages(m_tab_view); } diff --git a/src/components/channeltabswitcherhandy.hpp b/src/components/channeltabswitcherhandy.hpp index 6da9b17..a0149be 100644 --- a/src/components/channeltabswitcherhandy.hpp +++ b/src/components/channeltabswitcherhandy.hpp @@ -24,6 +24,8 @@ public: void GoBackOnCurrent(); void GoForwardOnCurrent(); + void GoToPreviousTab(); + void GoToNextTab(); [[nodiscard]] int GetNumberOfTabs() const; diff --git a/src/components/chatwindow.cpp b/src/components/chatwindow.cpp index 8667488..3cfde1b 100644 --- a/src/components/chatwindow.cpp +++ b/src/components/chatwindow.cpp @@ -192,6 +192,14 @@ void ChatWindow::GoBack() { void ChatWindow::GoForward() { m_tab_switcher->GoForwardOnCurrent(); } + +void ChatWindow::GoToPreviousTab() { + m_tab_switcher->GoToPreviousTab(); +} + +void ChatWindow::GoToNextTab() { + m_tab_switcher->GoToNextTab(); +} #endif Snowflake ChatWindow::GetActiveChannel() const { diff --git a/src/components/chatwindow.hpp b/src/components/chatwindow.hpp index 1c0b7cc..36bce6a 100644 --- a/src/components/chatwindow.hpp +++ b/src/components/chatwindow.hpp @@ -41,6 +41,8 @@ public: void UseTabsState(const TabsState &state); void GoBack(); void GoForward(); + void GoToPreviousTab(); + void GoToNextTab(); #endif protected: -- cgit v1.2.3