diff --git a/src/app/browser.cpp b/src/app/browser.cpp index a236bc9d..d25f2041 100644 --- a/src/app/browser.cpp +++ b/src/app/browser.cpp @@ -69,6 +69,14 @@ Browser::Browser( } ); + const auto ACTION__TAB_PIN = add_action( + "tab_pin", + [this] + { + browserMain->tab_pin(); + } + ); + const auto ACTION__TAB_CLOSE = add_action( "tab_close", [this] @@ -177,6 +185,7 @@ Browser::Browser( ACTION__SESSION_RESTORE, ACTION__SESSION_SAVE, ACTION__TAB_APPEND, + ACTION__TAB_PIN, ACTION__TAB_CLOSE, ACTION__TAB_CLOSE_ALL, ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, @@ -218,6 +227,11 @@ Browser::Browser( "t" ); + APP->set_accel_for_action( + "win.tab_pin", + "p" + ); + APP->set_accel_for_action( "win.tab_close", "Escape" diff --git a/src/app/browser/header.cpp b/src/app/browser/header.cpp index 7739044c..62a800a4 100644 --- a/src/app/browser/header.cpp +++ b/src/app/browser/header.cpp @@ -12,6 +12,7 @@ Header::Header( const Glib::RefPtr & ACTION__SESSION_RESTORE, const Glib::RefPtr & ACTION__SESSION_SAVE, const Glib::RefPtr & ACTION__TAB_APPEND, + const Glib::RefPtr & ACTION__TAB_PIN, const Glib::RefPtr & ACTION__TAB_CLOSE, const Glib::RefPtr & ACTION__TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, @@ -31,6 +32,7 @@ Header::Header( ACTION__SESSION_RESTORE, ACTION__SESSION_SAVE, ACTION__TAB_APPEND, + ACTION__TAB_PIN, ACTION__TAB_CLOSE, ACTION__TAB_CLOSE_ALL, ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, diff --git a/src/app/browser/header.hpp b/src/app/browser/header.hpp index 9cc105d5..b7d16e35 100644 --- a/src/app/browser/header.hpp +++ b/src/app/browser/header.hpp @@ -35,6 +35,7 @@ namespace app::browser const Glib::RefPtr & ACTION__SESSION_RESTORE, const Glib::RefPtr & ACTION__SESSION_SAVE, const Glib::RefPtr & ACTION__TAB_APPEND, + const Glib::RefPtr & ACTION__TAB_PIN, const Glib::RefPtr & ACTION__TAB_CLOSE, const Glib::RefPtr & ACTION__TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, diff --git a/src/app/browser/header/menu.cpp b/src/app/browser/header/menu.cpp index 21cf3a78..006a4683 100644 --- a/src/app/browser/header/menu.cpp +++ b/src/app/browser/header/menu.cpp @@ -9,6 +9,7 @@ Menu::Menu( const Glib::RefPtr & ACTION__SESSION_RESTORE, const Glib::RefPtr & ACTION__SESSION_SAVE, const Glib::RefPtr & ACTION__TAB_APPEND, + const Glib::RefPtr & ACTION__TAB_PIN, const Glib::RefPtr & ACTION__TAB_CLOSE, const Glib::RefPtr & ACTION__TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, @@ -60,6 +61,13 @@ Menu::Menu( ) ); + MENU__TAB->append( + _("Pin"), + get_action_detailed_name( + ACTION__TAB_PIN + ) + ); + const auto MENU__TAB_PAGE = Gio::Menu::create(); const auto MENU__TAB_PAGE_NAVIGATION = Gio::Menu::create(); diff --git a/src/app/browser/header/menu.hpp b/src/app/browser/header/menu.hpp index 21382d4f..6cae6b23 100644 --- a/src/app/browser/header/menu.hpp +++ b/src/app/browser/header/menu.hpp @@ -24,6 +24,7 @@ namespace app::browser::header const Glib::RefPtr & ACTION__SESSION_RESTORE, const Glib::RefPtr & ACTION__SESSION_SAVE, const Glib::RefPtr & ACTION__TAB_APPEND, + const Glib::RefPtr & ACTION__TAB_PIN, const Glib::RefPtr & ACTION__TAB_CLOSE, const Glib::RefPtr & ACTION__TAB_CLOSE_ALL, const Glib::RefPtr & ACTION__TAB_PAGE_NAVIGATION_HISTORY_BACK, diff --git a/src/app/browser/main.cpp b/src/app/browser/main.cpp index 2b218cfb..5b7416c1 100644 --- a/src/app/browser/main.cpp +++ b/src/app/browser/main.cpp @@ -114,6 +114,13 @@ void Main::tab_append() ); }; +void Main::tab_pin() +{ + mainTab->pin( + mainTab->get_current_page() + ); +}; + void Main::tab_close() { mainTab->close( diff --git a/src/app/browser/main.hpp b/src/app/browser/main.hpp index 79f119e6..51b5e512 100644 --- a/src/app/browser/main.hpp +++ b/src/app/browser/main.hpp @@ -85,6 +85,7 @@ namespace app::browser // Actions void tab_append(); + void tab_pin(); void tab_close_all(); void tab_close_left(); diff --git a/src/app/browser/main/tab.cpp b/src/app/browser/main/tab.cpp index f9cd9bea..a5e54d97 100644 --- a/src/app/browser/main/tab.cpp +++ b/src/app/browser/main/tab.cpp @@ -205,6 +205,14 @@ int Tab::append( return PAGE_NUMBER; }; +void Tab::pin( + const int & PAGE_NUMBER +) { + get_tabLabel( + PAGE_NUMBER + )->pin(); +} + void Tab::close( const int & PAGE_NUMBER ) { diff --git a/src/app/browser/main/tab.hpp b/src/app/browser/main/tab.hpp index 5910e87e..ad2b8b68 100644 --- a/src/app/browser/main/tab.hpp +++ b/src/app/browser/main/tab.hpp @@ -98,6 +98,10 @@ namespace app::browser::main const bool & IS_CURRENT ); + void pin( + const int & PAGE_NUMBER + ); + void close( const int & PAGE_NUMBER ); diff --git a/src/app/browser/main/tab/label.cpp b/src/app/browser/main/tab/label.cpp index 2fa70f0a..fe6c6b27 100644 --- a/src/app/browser/main/tab/label.cpp +++ b/src/app/browser/main/tab/label.cpp @@ -177,6 +177,13 @@ void Label::pin( } } +void Label::pin() +{ + pin( + !is_pinned + ); +} + void Label::update( const Glib::ustring & TEXT ) { diff --git a/src/app/browser/main/tab/label.hpp b/src/app/browser/main/tab/label.hpp index e34c60b5..8494f51f 100644 --- a/src/app/browser/main/tab/label.hpp +++ b/src/app/browser/main/tab/label.hpp @@ -95,6 +95,8 @@ namespace app::browser::main::tab const bool & IS_PINNED ); + void pin(); + void update( const Glib::ustring & TEXT );