mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:18:11 +00:00
Browser: Add Ctrl-<number> actions to changes tabs
It is now possible to quickly switch to specific tabs directly without having to 'search linearly'. Pressing Ctrl plus a number from 1 to 8 switches to the tab of that index. Pressing Ctrl-9 swithes to the last tab. This feature already exists in Firefox and Chrome.
This commit is contained in:
parent
1b7850f511
commit
3818840ee6
3 changed files with 28 additions and 0 deletions
|
@ -114,6 +114,15 @@ BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url)
|
||||||
m_tab_widget->activate_previous_tab();
|
m_tab_widget->activate_previous_tab();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
for (int i = 0; i <= 7; ++i) {
|
||||||
|
m_window_actions.on_tabs.append([this, i] {
|
||||||
|
m_tab_widget->set_tab_index(i);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
m_window_actions.on_tabs.append([this] {
|
||||||
|
m_tab_widget->activate_last_tab();
|
||||||
|
});
|
||||||
|
|
||||||
m_window_actions.on_about = [this] {
|
m_window_actions.on_about = [this] {
|
||||||
auto app_icon = GUI::Icon::default_icon("app-browser");
|
auto app_icon = GUI::Icon::default_icon("app-browser");
|
||||||
GUI::AboutDialog::show("Browser", app_icon.bitmap_for_size(32), this);
|
GUI::AboutDialog::show("Browser", app_icon.bitmap_for_size(32), this);
|
||||||
|
|
|
@ -48,6 +48,23 @@ WindowActions::WindowActions(GUI::Window& window)
|
||||||
&window);
|
&window);
|
||||||
m_previous_tab_action->set_status_tip("Switch to the previous tab");
|
m_previous_tab_action->set_status_tip("Switch to the previous tab");
|
||||||
|
|
||||||
|
for (auto i = 0; i <= 7; ++i) {
|
||||||
|
m_tab_actions.append(GUI::Action::create(
|
||||||
|
String::formatted("Tab {}", i + 1), { Mod_Ctrl, static_cast<KeyCode>(Key_1 + i) }, [this, i](auto&) {
|
||||||
|
if (on_tabs[i])
|
||||||
|
on_tabs[i]();
|
||||||
|
},
|
||||||
|
&window));
|
||||||
|
m_tab_actions.last().set_status_tip(String::formatted("Switch to tab {}", i + 1));
|
||||||
|
}
|
||||||
|
m_tab_actions.append(GUI::Action::create(
|
||||||
|
"Last tab", { Mod_Ctrl, Key_9 }, [this](auto&) {
|
||||||
|
if (on_tabs[8])
|
||||||
|
on_tabs[8]();
|
||||||
|
},
|
||||||
|
&window));
|
||||||
|
m_tab_actions.last().set_status_tip("Switch to last tab");
|
||||||
|
|
||||||
m_about_action = GUI::Action::create(
|
m_about_action = GUI::Action::create(
|
||||||
"&About Browser", GUI::Icon::default_icon("app-browser").bitmap_for_size(16), [this](const GUI::Action&) {
|
"&About Browser", GUI::Icon::default_icon("app-browser").bitmap_for_size(16), [this](const GUI::Action&) {
|
||||||
if (on_about)
|
if (on_about)
|
||||||
|
|
|
@ -19,6 +19,7 @@ public:
|
||||||
Function<void()> on_create_new_tab;
|
Function<void()> on_create_new_tab;
|
||||||
Function<void()> on_next_tab;
|
Function<void()> on_next_tab;
|
||||||
Function<void()> on_previous_tab;
|
Function<void()> on_previous_tab;
|
||||||
|
Vector<Function<void()>> on_tabs;
|
||||||
Function<void()> on_about;
|
Function<void()> on_about;
|
||||||
Function<void(GUI::Action&)> on_show_bookmarks_bar;
|
Function<void(GUI::Action&)> on_show_bookmarks_bar;
|
||||||
|
|
||||||
|
@ -32,6 +33,7 @@ private:
|
||||||
RefPtr<GUI::Action> m_create_new_tab_action;
|
RefPtr<GUI::Action> m_create_new_tab_action;
|
||||||
RefPtr<GUI::Action> m_next_tab_action;
|
RefPtr<GUI::Action> m_next_tab_action;
|
||||||
RefPtr<GUI::Action> m_previous_tab_action;
|
RefPtr<GUI::Action> m_previous_tab_action;
|
||||||
|
NonnullRefPtrVector<GUI::Action> m_tab_actions;
|
||||||
RefPtr<GUI::Action> m_about_action;
|
RefPtr<GUI::Action> m_about_action;
|
||||||
RefPtr<GUI::Action> m_show_bookmarks_bar_action;
|
RefPtr<GUI::Action> m_show_bookmarks_bar_action;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue