diff --git a/Userland/Applications/Browser/BrowserWindow.cpp b/Userland/Applications/Browser/BrowserWindow.cpp index 65f8c1f74c..71fbde74cc 100644 --- a/Userland/Applications/Browser/BrowserWindow.cpp +++ b/Userland/Applications/Browser/BrowserWindow.cpp @@ -134,6 +134,15 @@ BrowserWindow::BrowserWindow(CookieJar& cookie_jar, URL url) m_window_actions.show_bookmarks_bar_action().set_checked(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(); create_new_tab(move(url), true); @@ -157,6 +166,7 @@ void BrowserWindow::build_menus() auto& view_menu = add_menu("&View"); 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_action(GUI::CommonActions::make_fullscreen_action( [this](auto&) { diff --git a/Userland/Applications/Browser/WindowActions.cpp b/Userland/Applications/Browser/WindowActions.cpp index d6bd24ad11..0af7bfedee 100644 --- a/Userland/Applications/Browser/WindowActions.cpp +++ b/Userland/Applications/Browser/WindowActions.cpp @@ -81,6 +81,15 @@ WindowActions::WindowActions(GUI::Window& window) }, &window); 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"); } } diff --git a/Userland/Applications/Browser/WindowActions.h b/Userland/Applications/Browser/WindowActions.h index 923c8f705c..0c208a642d 100644 --- a/Userland/Applications/Browser/WindowActions.h +++ b/Userland/Applications/Browser/WindowActions.h @@ -22,12 +22,14 @@ public: Vector> on_tabs; Function on_about; Function on_show_bookmarks_bar; + Function on_vertical_tabs; GUI::Action& create_new_tab_action() { return *m_create_new_tab_action; } GUI::Action& next_tab_action() { return *m_next_tab_action; } GUI::Action& previous_tab_action() { return *m_previous_tab_action; } GUI::Action& about_action() { return *m_about_action; } GUI::Action& show_bookmarks_bar_action() { return *m_show_bookmarks_bar_action; } + GUI::Action& vertical_tabs_action() { return *m_vertical_tabs_action; } private: RefPtr m_create_new_tab_action; @@ -36,6 +38,7 @@ private: NonnullRefPtrVector m_tab_actions; RefPtr m_about_action; RefPtr m_show_bookmarks_bar_action; + RefPtr m_vertical_tabs_action; }; }