From 9d79a9b214af9470b3cee732f2ad420379b99a3c Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Wed, 15 Mar 2023 15:48:16 +0300 Subject: [PATCH] Browser: Implement `notify_request_open_new_tab` --- Userland/Applications/Browser/BrowserWindow.cpp | 4 +++- Userland/Applications/Browser/BrowserWindow.h | 2 +- Userland/Applications/Browser/Tab.cpp | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) 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); };