diff --git a/Userland/Applications/Browser/BrowserWindow.cpp b/Userland/Applications/Browser/BrowserWindow.cpp index 9130c2759e..e5fbf64b36 100644 --- a/Userland/Applications/Browser/BrowserWindow.cpp +++ b/Userland/Applications/Browser/BrowserWindow.cpp @@ -565,7 +565,7 @@ void BrowserWindow::set_window_title_for_tab(Tab const& tab) set_title(DeprecatedString::formatted("{} - Browser", title.is_empty() ? url.to_deprecated_string() : title)); } -void BrowserWindow::create_new_tab(URL url, bool activate) +Tab& BrowserWindow::create_new_tab(URL url, bool activate) { auto& new_tab = m_tab_widget->add_tab("New tab"_short_string, *this); @@ -652,6 +652,8 @@ void BrowserWindow::create_new_tab(URL url, bool activate) if (activate) m_tab_widget->set_active_widget(&new_tab); + + return new_tab; } void BrowserWindow::create_new_window(URL url) diff --git a/Userland/Applications/Browser/BrowserWindow.h b/Userland/Applications/Browser/BrowserWindow.h index 5c9691c751..d5f18cc8c5 100644 --- a/Userland/Applications/Browser/BrowserWindow.h +++ b/Userland/Applications/Browser/BrowserWindow.h @@ -28,7 +28,7 @@ public: GUI::TabWidget& tab_widget(); Tab& active_tab(); - void create_new_tab(URL, bool activate); + Tab& create_new_tab(URL, bool activate); void create_new_window(URL); GUI::Action& go_back_action() { return *m_go_back_action; } diff --git a/Userland/Applications/Browser/Tab.cpp b/Userland/Applications/Browser/Tab.cpp index 587a26d334..c18ff748c5 100644 --- a/Userland/Applications/Browser/Tab.cpp +++ b/Userland/Applications/Browser/Tab.cpp @@ -468,6 +468,11 @@ Tab::Tab(BrowserWindow& window) go_forward(); }; + view().on_new_tab = [this] { + auto& tab = this->window().create_new_tab(URL("about:blank"), true); + return tab.view().handle(); + }; + view().on_close = [this] { on_tab_close_request(*this); };