Преглед изворни кода

Browser: Allow usage of vertical tabs

Add implementation of vertical tabs into the browser,
with the new `Ctrl + ,` shortcut, or within the View Options
Cameron Youell пре 3 година
родитељ
комит
df7fd39fcc

+ 10 - 0
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&) {

+ 9 - 0
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");
 }
 
 }

+ 3 - 0
Userland/Applications/Browser/WindowActions.h

@@ -22,12 +22,14 @@ public:
     Vector<Function<void()>> on_tabs;
     Function<void()> on_about;
     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& 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<GUI::Action> m_create_new_tab_action;
@@ -36,6 +38,7 @@ private:
     NonnullRefPtrVector<GUI::Action> m_tab_actions;
     RefPtr<GUI::Action> m_about_action;
     RefPtr<GUI::Action> m_show_bookmarks_bar_action;
+    RefPtr<GUI::Action> m_vertical_tabs_action;
 };
 
 }