Browser: Add "Close tab" action (Ctrl+W) :^)

Note that this is a little bit unreliable with the keyboard shortcut
since LibGUI can get confused about which Action it's supposed to use
as each Browser::Tab has its own "close tab" action. This will need
to be fixed in LibGUI.
This commit is contained in:
Andreas Kling 2020-04-23 21:36:17 +02:00
parent 476a4475e5
commit 312501f309
Notes: sideshowbarker 2024-07-19 07:21:13 +09:00
3 changed files with 12 additions and 0 deletions

View file

@ -178,6 +178,9 @@ Tab::Tab()
auto& app_menu = m_menubar->add_menu("Browser");
app_menu.add_action(WindowActions::the().create_new_tab_action());
app_menu.add_action(GUI::Action::create("Close tab", { Mod_Ctrl, Key_W }, [this](auto&) {
on_tab_close_request(*this);
}));
app_menu.add_action(GUI::Action::create("Reload", { Mod_None, Key_F5 }, Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"), [this](auto&) {
TemporaryChange<bool> change(m_should_push_loads_to_history, false);

View file

@ -44,6 +44,7 @@ public:
void did_become_active();
Function<void(String)> on_title_change;
Function<void(Tab&)> on_tab_close_request;
const String& title() const { return m_title; }

View file

@ -100,6 +100,14 @@ int main(int argc, char** argv)
window->set_title(String::format("%s - Browser", title.characters()));
};
new_tab.on_tab_close_request = [&](auto& tab) {
tab_widget.deferred_invoke([&](auto&) {
tab_widget.remove_tab(tab);
if (tab_widget.children().is_empty())
app.quit();
});
};
window->set_icon(Gfx::Bitmap::load_from_file("/res/icons/16x16/filetype-html.png"));
window->set_title("Browser");