mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 08:41:15 +00:00
Browser: Add context menu item for copying selected text
This commit is contained in:
parent
2fda6ce159
commit
58cb37f986
Notes:
sideshowbarker
2024-07-18 09:03:25 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/58cb37f986d Pull-request: https://github.com/SerenityOS/serenity/pull/8740
|
@ -17,6 +17,7 @@
|
|||
#include <LibCore/StandardPaths.h>
|
||||
#include <LibGUI/AboutDialog.h>
|
||||
#include <LibGUI/Application.h>
|
||||
#include <LibGUI/Clipboard.h>
|
||||
#include <LibGUI/Icon.h>
|
||||
#include <LibGUI/InputBox.h>
|
||||
#include <LibGUI/Menu.h>
|
||||
|
@ -175,6 +176,19 @@ void BrowserWindow::build_menus()
|
|||
go_menu.add_separator();
|
||||
go_menu.add_action(*m_reload_action);
|
||||
|
||||
m_copy_selection_action = GUI::CommonActions::make_copy_action([this](auto&) {
|
||||
auto& tab = active_tab();
|
||||
String selected_text;
|
||||
|
||||
if (tab.m_type == Tab::Type::InProcessWebView)
|
||||
selected_text = tab.m_page_view->selected_text();
|
||||
else
|
||||
selected_text = tab.m_web_content_view->selected_text();
|
||||
|
||||
if (!selected_text.is_empty())
|
||||
GUI::Clipboard::the().set_plain_text(selected_text);
|
||||
});
|
||||
|
||||
m_view_source_action = GUI::Action::create(
|
||||
"View &Source", { Mod_Ctrl, Key_U }, [this](auto&) {
|
||||
auto& tab = active_tab();
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
GUI::Action& go_forward_action() { return *m_go_forward_action; }
|
||||
GUI::Action& go_home_action() { return *m_go_home_action; }
|
||||
GUI::Action& reload_action() { return *m_reload_action; }
|
||||
GUI::Action& copy_selection_action() { return *m_copy_selection_action; }
|
||||
GUI::Action& view_source_action() { return *m_view_source_action; }
|
||||
GUI::Action& inspect_dom_tree_action() { return *m_inspect_dom_tree_action; }
|
||||
|
||||
|
@ -43,6 +44,7 @@ private:
|
|||
RefPtr<GUI::Action> m_go_forward_action;
|
||||
RefPtr<GUI::Action> m_go_home_action;
|
||||
RefPtr<GUI::Action> m_reload_action;
|
||||
RefPtr<GUI::Action> m_copy_selection_action;
|
||||
RefPtr<GUI::Action> m_view_source_action;
|
||||
RefPtr<GUI::Action> m_inspect_dom_tree_action;
|
||||
|
||||
|
|
|
@ -332,6 +332,8 @@ Tab::Tab(BrowserWindow& window, Type type)
|
|||
m_page_context_menu->add_action(window.go_forward_action());
|
||||
m_page_context_menu->add_action(window.reload_action());
|
||||
m_page_context_menu->add_separator();
|
||||
m_page_context_menu->add_action(window.copy_selection_action());
|
||||
m_page_context_menu->add_separator();
|
||||
m_page_context_menu->add_action(window.view_source_action());
|
||||
m_page_context_menu->add_action(window.inspect_dom_tree_action());
|
||||
hooks().on_context_menu_request = [&](auto& screen_position) {
|
||||
|
|
Loading…
Reference in a new issue