1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:07:45 +00:00

Browser: Allow usage of vertical tabs

Add implementation of vertical tabs into the browser,
with the new `Ctrl + ,` shortcut, or within the View Options
This commit is contained in:
Cameron Youell 2022-05-13 18:42:44 +10:00 committed by Andreas Kling
parent 5b82bd719e
commit df7fd39fcc
3 changed files with 22 additions and 0 deletions

View file

@ -134,6 +134,15 @@ BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url)
m_window_actions.show_bookmarks_bar_action().set_checked(show_bookmarks_bar); m_window_actions.show_bookmarks_bar_action().set_checked(show_bookmarks_bar);
Browser::BookmarksBarWidget::the().set_visible(show_bookmarks_bar); Browser::BookmarksBarWidget::the().set_visible(show_bookmarks_bar);
m_window_actions.on_vertical_tabs = [this](auto& action) {
m_tab_widget->set_tab_position(action.is_checked() ? GUI::TabWidget::TabPosition::Left : GUI::TabWidget::TabPosition::Top);
Config::write_bool("Browser", "Preferences", "VerticalTabs", action.is_checked());
};
bool vertical_tabs = Config::read_bool("Browser", "Preferences", "VerticalTabs", false);
m_window_actions.vertical_tabs_action().set_checked(vertical_tabs);
m_tab_widget->set_tab_position(vertical_tabs ? GUI::TabWidget::TabPosition::Left : GUI::TabWidget::TabPosition::Top);
build_menus(); build_menus();
create_new_tab(move(url), true); create_new_tab(move(url), true);
@ -157,6 +166,7 @@ void BrowserWindow::build_menus()
auto& view_menu = add_menu("&View"); auto& view_menu = add_menu("&View");
view_menu.add_action(WindowActions::the().show_bookmarks_bar_action()); view_menu.add_action(WindowActions::the().show_bookmarks_bar_action());
view_menu.add_action(WindowActions::the().vertical_tabs_action());
view_menu.add_separator(); view_menu.add_separator();
view_menu.add_action(GUI::CommonActions::make_fullscreen_action( view_menu.add_action(GUI::CommonActions::make_fullscreen_action(
[this](auto&) { [this](auto&) {

View file

@ -81,6 +81,15 @@ WindowActions::WindowActions(GUI::Window& window)
}, },
&window); &window);
m_show_bookmarks_bar_action->set_status_tip("Show/hide the bookmarks bar"); m_show_bookmarks_bar_action->set_status_tip("Show/hide the bookmarks bar");
m_vertical_tabs_action = GUI::Action::create_checkable(
"&Vertical Tabs", { Mod_Ctrl, Key_Comma },
[this](auto& action) {
if (on_vertical_tabs)
on_vertical_tabs(action);
},
&window);
m_vertical_tabs_action->set_status_tip("Enable/Disable vertical tabs");
} }
} }

View file

@ -22,12 +22,14 @@ public:
Vector<Function<void()>> on_tabs; 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;
Function<void(GUI::Action&)> on_vertical_tabs;
GUI::Action& create_new_tab_action() { return *m_create_new_tab_action; } GUI::Action& create_new_tab_action() { return *m_create_new_tab_action; }
GUI::Action& next_tab_action() { return *m_next_tab_action; } GUI::Action& next_tab_action() { return *m_next_tab_action; }
GUI::Action& previous_tab_action() { return *m_previous_tab_action; } GUI::Action& previous_tab_action() { return *m_previous_tab_action; }
GUI::Action& about_action() { return *m_about_action; } GUI::Action& about_action() { return *m_about_action; }
GUI::Action& show_bookmarks_bar_action() { return *m_show_bookmarks_bar_action; } GUI::Action& show_bookmarks_bar_action() { return *m_show_bookmarks_bar_action; }
GUI::Action& vertical_tabs_action() { return *m_vertical_tabs_action; }
private: private:
RefPtr<GUI::Action> m_create_new_tab_action; RefPtr<GUI::Action> m_create_new_tab_action;
@ -36,6 +38,7 @@ private:
NonnullRefPtrVector<GUI::Action> m_tab_actions; 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;
RefPtr<GUI::Action> m_vertical_tabs_action;
}; };
} }