From 66758655826d597d126883d63d1c4b11b5e85db1 Mon Sep 17 00:00:00 2001 From: electrikmilk Date: Wed, 7 Sep 2022 23:18:19 -0400 Subject: [PATCH] Browser: Add context menu icons This adds two new icons for browser context menu items "Close Other Tabs" and "Download". This adds existing icons where they were missing in context menu items. --- Base/res/icons/16x16/close-other-tabs.png | Bin 0 -> 7154 bytes Base/res/icons/16x16/download.png | Bin 0 -> 778 bytes .../Browser/BookmarksBarWidget.cpp | 6 +++--- Userland/Applications/Browser/IconBag.cpp | 6 ++++++ Userland/Applications/Browser/IconBag.h | 6 ++++++ Userland/Applications/Browser/Tab.cpp | 20 +++++++++--------- 6 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 Base/res/icons/16x16/close-other-tabs.png create mode 100644 Base/res/icons/16x16/download.png diff --git a/Base/res/icons/16x16/close-other-tabs.png b/Base/res/icons/16x16/close-other-tabs.png new file mode 100644 index 0000000000000000000000000000000000000000..1f259ef61e224d1f680f2cb4e9abd618df31d41c GIT binary patch literal 7154 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 zeuaEJ$tRadd_action(default_action); m_context_menu->add_action(GUI::Action::create( - "Open in New &Tab", [this](auto&) { + "Open in New &Tab", g_icon_bag.new_tab, [this](auto&) { if (on_bookmark_click) on_bookmark_click(m_context_menu_url, OpenInNewTab::Yes); }, this)); m_context_menu->add_separator(); m_context_menu->add_action(GUI::Action::create( - "&Edit...", [this](auto&) { + "&Edit...", g_icon_bag.rename, [this](auto&) { edit_bookmark(m_context_menu_url); }, this)); diff --git a/Userland/Applications/Browser/IconBag.cpp b/Userland/Applications/Browser/IconBag.cpp index 05e738a9b6a497..4f80ac56d99d73 100644 --- a/Userland/Applications/Browser/IconBag.cpp +++ b/Userland/Applications/Browser/IconBag.cpp @@ -15,6 +15,7 @@ ErrorOr IconBag::try_create() icon_bag.filetype_html = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/filetype-html.png"sv)); icon_bag.filetype_text = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/filetype-text.png"sv)); icon_bag.filetype_javascript = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/filetype-javascript.png"sv)); + icon_bag.filetype_image = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/filetype-image.png"sv)); icon_bag.bookmark_contour = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/bookmark-contour.png"sv)); icon_bag.bookmark_filled = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/bookmark-filled.png"sv)); icon_bag.inspector_object = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/inspector-object.png"sv)); @@ -24,6 +25,7 @@ ErrorOr IconBag::try_create() icon_bag.delete_icon = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/delete.png"sv)); icon_bag.new_tab = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/new-tab.png"sv)); icon_bag.duplicate_tab = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/duplicate-tab.png"sv)); + icon_bag.close_other_tabs = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/close-other-tabs.png"sv)); icon_bag.code = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/code.png"sv)); icon_bag.dom_tree = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/browser/dom-tree.png"sv)); icon_bag.layout = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/layout.png"sv)); @@ -36,6 +38,10 @@ ErrorOr IconBag::try_create() icon_bag.trash_can = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/trash-can.png"sv)); icon_bag.clear_cache = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/browser/clear-cache.png"sv)); icon_bag.spoof = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/spoof.png"sv)); + icon_bag.go_to = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/go-forward.png"sv)); + icon_bag.download = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/download.png"sv)); + icon_bag.copy = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/edit-copy.png"sv)); + icon_bag.rename = TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/rename.png"sv)); return icon_bag; } diff --git a/Userland/Applications/Browser/IconBag.h b/Userland/Applications/Browser/IconBag.h index 08a56c6a4a0360..b57e21cb082ddd 100644 --- a/Userland/Applications/Browser/IconBag.h +++ b/Userland/Applications/Browser/IconBag.h @@ -16,6 +16,7 @@ struct IconBag final { RefPtr filetype_html { nullptr }; RefPtr filetype_text { nullptr }; RefPtr filetype_javascript { nullptr }; + RefPtr filetype_image { nullptr }; RefPtr bookmark_contour { nullptr }; RefPtr bookmark_filled { nullptr }; RefPtr inspector_object { nullptr }; @@ -25,6 +26,7 @@ struct IconBag final { RefPtr delete_icon { nullptr }; RefPtr new_tab { nullptr }; RefPtr duplicate_tab { nullptr }; + RefPtr close_other_tabs { nullptr }; RefPtr code { nullptr }; RefPtr dom_tree { nullptr }; RefPtr layout { nullptr }; @@ -37,5 +39,9 @@ struct IconBag final { RefPtr trash_can { nullptr }; RefPtr clear_cache { nullptr }; RefPtr spoof { nullptr }; + RefPtr go_to { nullptr }; + RefPtr download { nullptr }; + RefPtr copy { nullptr }; + RefPtr rename { nullptr }; }; } diff --git a/Userland/Applications/Browser/Tab.cpp b/Userland/Applications/Browser/Tab.cpp index d2d9ca2c263d87..d9a335da4e2a3e 100644 --- a/Userland/Applications/Browser/Tab.cpp +++ b/Userland/Applications/Browser/Tab.cpp @@ -247,20 +247,20 @@ Tab::Tab(BrowserWindow& window) }; m_link_context_menu = GUI::Menu::construct(); - auto link_default_action = GUI::Action::create("&Open", [this](auto&) { + auto link_default_action = GUI::Action::create("&Open", g_icon_bag.go_to, [this](auto&) { view().on_link_click(m_link_context_menu_url, "", 0); }); m_link_context_menu->add_action(link_default_action); m_link_context_menu_default_action = link_default_action; - m_link_context_menu->add_action(GUI::Action::create("Open in New &Tab", [this](auto&) { + m_link_context_menu->add_action(GUI::Action::create("Open in New &Tab", g_icon_bag.new_tab, [this](auto&) { view().on_link_click(m_link_context_menu_url, "_blank", 0); })); m_link_context_menu->add_separator(); - m_link_context_menu->add_action(GUI::Action::create("&Copy URL", [this](auto&) { + m_link_context_menu->add_action(GUI::Action::create("&Copy URL", g_icon_bag.copy, [this](auto&) { GUI::Clipboard::the().set_plain_text(m_link_context_menu_url.to_string()); })); m_link_context_menu->add_separator(); - m_link_context_menu->add_action(GUI::Action::create("&Download", [this](auto&) { + m_link_context_menu->add_action(GUI::Action::create("&Download", g_icon_bag.download, [this](auto&) { start_download(m_link_context_menu_url); })); m_link_context_menu->add_separator(); @@ -272,22 +272,22 @@ Tab::Tab(BrowserWindow& window) }; m_image_context_menu = GUI::Menu::construct(); - m_image_context_menu->add_action(GUI::Action::create("&Open Image", [this](auto&) { + m_image_context_menu->add_action(GUI::Action::create("&Open Image", g_icon_bag.filetype_image, [this](auto&) { view().on_link_click(m_image_context_menu_url, "", 0); })); - m_image_context_menu->add_action(GUI::Action::create("Open Image in New &Tab", [this](auto&) { + m_image_context_menu->add_action(GUI::Action::create("Open Image in New &Tab", g_icon_bag.new_tab, [this](auto&) { view().on_link_click(m_image_context_menu_url, "_blank", 0); })); m_image_context_menu->add_separator(); - m_image_context_menu->add_action(GUI::Action::create("&Copy Image", [this](auto&) { + m_image_context_menu->add_action(GUI::Action::create("&Copy Image", g_icon_bag.copy, [this](auto&) { if (m_image_context_menu_bitmap.is_valid()) GUI::Clipboard::the().set_bitmap(*m_image_context_menu_bitmap.bitmap()); })); - m_image_context_menu->add_action(GUI::Action::create("Copy Image &URL", [this](auto&) { + m_image_context_menu->add_action(GUI::Action::create("Copy Image &URL", g_icon_bag.copy, [this](auto&) { GUI::Clipboard::the().set_plain_text(m_image_context_menu_url.to_string()); })); m_image_context_menu->add_separator(); - m_image_context_menu->add_action(GUI::Action::create("&Download", [this](auto&) { + m_image_context_menu->add_action(GUI::Action::create("&Download", g_icon_bag.download, [this](auto&) { start_download(m_image_context_menu_url); })); m_image_context_menu->add_separator(); @@ -386,7 +386,7 @@ Tab::Tab(BrowserWindow& window) m_tab_context_menu->add_action(GUI::Action::create("&Duplicate Tab", g_icon_bag.duplicate_tab, [this](auto&) { on_tab_open_request(url()); })); - m_tab_context_menu->add_action(GUI::Action::create("Close &Other Tabs", [this](auto&) { + m_tab_context_menu->add_action(GUI::Action::create("Close &Other Tabs", g_icon_bag.close_other_tabs, [this](auto&) { on_tab_close_other_request(*this); }));