mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 10:37:45 +00:00
Browser: Add right-click context menu to tabs
Right clicking on a position in the PageView of a tab will open a context menu with common actions like back, forward, reload, view source and inspect DOM. :^)
This commit is contained in:
parent
cc675cbe24
commit
3a4e121904
2 changed files with 21 additions and 5 deletions
|
@ -268,8 +268,7 @@ Tab::Tab()
|
||||||
},
|
},
|
||||||
this));
|
this));
|
||||||
|
|
||||||
auto& inspect_menu = m_menubar->add_menu("Inspect");
|
auto view_source_action = GUI::Action::create(
|
||||||
inspect_menu.add_action(GUI::Action::create(
|
|
||||||
"View source", { Mod_Ctrl, Key_U }, [this](auto&) {
|
"View source", { Mod_Ctrl, Key_U }, [this](auto&) {
|
||||||
ASSERT(m_page_view->document());
|
ASSERT(m_page_view->document());
|
||||||
auto url = m_page_view->document()->url().to_string();
|
auto url = m_page_view->document()->url().to_string();
|
||||||
|
@ -284,8 +283,9 @@ Tab::Tab()
|
||||||
window->show();
|
window->show();
|
||||||
(void)window.leak_ref();
|
(void)window.leak_ref();
|
||||||
},
|
},
|
||||||
this));
|
this);
|
||||||
inspect_menu.add_action(GUI::Action::create(
|
|
||||||
|
auto inspect_dom_tree_action = GUI::Action::create(
|
||||||
"Inspect DOM tree", { Mod_None, Key_F12 }, [this](auto&) {
|
"Inspect DOM tree", { Mod_None, Key_F12 }, [this](auto&) {
|
||||||
if (!m_dom_inspector_window) {
|
if (!m_dom_inspector_window) {
|
||||||
m_dom_inspector_window = GUI::Window::construct();
|
m_dom_inspector_window = GUI::Window::construct();
|
||||||
|
@ -298,7 +298,11 @@ Tab::Tab()
|
||||||
m_dom_inspector_window->show();
|
m_dom_inspector_window->show();
|
||||||
m_dom_inspector_window->move_to_front();
|
m_dom_inspector_window->move_to_front();
|
||||||
},
|
},
|
||||||
this));
|
this);
|
||||||
|
|
||||||
|
auto& inspect_menu = m_menubar->add_menu("Inspect");
|
||||||
|
inspect_menu.add_action(*view_source_action);
|
||||||
|
inspect_menu.add_action(*inspect_dom_tree_action);
|
||||||
|
|
||||||
inspect_menu.add_action(GUI::Action::create(
|
inspect_menu.add_action(GUI::Action::create(
|
||||||
"Open JS Console", { Mod_Ctrl, Key_I }, [this](auto&) {
|
"Open JS Console", { Mod_Ctrl, Key_I }, [this](auto&) {
|
||||||
|
@ -356,6 +360,17 @@ Tab::Tab()
|
||||||
m_tab_context_menu->add_action(GUI::Action::create("Close Tab", [this](auto&) {
|
m_tab_context_menu->add_action(GUI::Action::create("Close Tab", [this](auto&) {
|
||||||
on_tab_close_request(*this);
|
on_tab_close_request(*this);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
m_page_context_menu = GUI::Menu::construct();
|
||||||
|
m_page_context_menu->add_action(*m_go_back_action);
|
||||||
|
m_page_context_menu->add_action(*m_go_forward_action);
|
||||||
|
m_page_context_menu->add_action(*m_reload_action);
|
||||||
|
m_page_context_menu->add_separator();
|
||||||
|
m_page_context_menu->add_action(*view_source_action);
|
||||||
|
m_page_context_menu->add_action(*inspect_dom_tree_action);
|
||||||
|
m_page_view->on_context_menu_request = [&](auto& screen_position) {
|
||||||
|
m_page_context_menu->popup(screen_position);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Tab::~Tab()
|
Tab::~Tab()
|
||||||
|
|
|
@ -76,6 +76,7 @@ private:
|
||||||
String m_link_context_menu_href;
|
String m_link_context_menu_href;
|
||||||
|
|
||||||
RefPtr<GUI::Menu> m_tab_context_menu;
|
RefPtr<GUI::Menu> m_tab_context_menu;
|
||||||
|
RefPtr<GUI::Menu> m_page_context_menu;
|
||||||
|
|
||||||
String m_title;
|
String m_title;
|
||||||
RefPtr<const Gfx::Bitmap> m_icon;
|
RefPtr<const Gfx::Bitmap> m_icon;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue