From e46a4181fa53584706ceb09c3223228f16fe5aa9 Mon Sep 17 00:00:00 2001 From: Karol Kosek Date: Thu, 15 Jul 2021 14:01:01 +0200 Subject: [PATCH] Help: Add context menu --- Userland/Applications/Help/main.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Userland/Applications/Help/main.cpp b/Userland/Applications/Help/main.cpp index 3b23ec89fb..32f36aefcc 100644 --- a/Userland/Applications/Help/main.cpp +++ b/Userland/Applications/Help/main.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -277,6 +278,29 @@ int main(int argc, char* argv[]) window->set_menubar(move(menubar)); + auto context_menu = GUI::Menu::construct(); + context_menu->add_action(*go_back_action); + context_menu->add_action(*go_forward_action); + context_menu->add_action(*go_home_action); + context_menu->add_separator(); + + RefPtr copy_action = GUI::CommonActions::make_copy_action([&](auto&) { + auto selected_text = page_view.selected_text(); + if (!selected_text.is_empty()) + GUI::Clipboard::the().set_plain_text(selected_text); + }); + context_menu->add_action(*copy_action); + + RefPtr select_all_function = GUI::CommonActions::make_select_all_action([&](auto&) { + page_view.select_all(); + }); + context_menu->add_action(*select_all_function); + + page_view.on_context_menu_request = [&](auto& screen_position) { + copy_action->set_enabled(!page_view.selected_text().is_empty()); + context_menu->popup(screen_position); + }; + if (start_page) { URL url = URL::create_with_url_or_path(start_page); if (url.is_valid() && url.path().ends_with(".md")) {