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 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!to-&BP}lmsP~D-;yvr)B1( zDwI?fq$;FVWTr7NRNPt{9y#r`1;^iX(Y-8#5Uod!ygo7B8MH^JR;@zzUruvHP=b zyveUJWA~q9_}N}2^RC>K$IVa7{{MQA!JVS6bZ|*--=$|KPW@^yXRq`<-Lm9kI@i+m zo9-H2{ObHU?eU}P@=rhRx`wQ;)L84WJ%{(*wLFG5e>iUTct*V|lscqvc#631jR^}B z&cE6c&)IRT<<&eX*@&Cze`5Umb1ZNAym6j*Sa1HT&cDTB(=Pq*cvCX_WT5`xBcd0b zzdldzS(bcKGBQOx;ME4zQt#B62iGYa;aSU)!Dz=^<)Qf8L!xWlx`eeev$))z9%0(W zW}P>uvLHU?DOZP|73U72iCSfWT06Xh4oXCuv-5W*Y>i}HT)OaXsRl_{Kp?>?TIpYkv{dg zn5RZgWUR>f?~@PcxkO7;ohaR1kTaWk3dcg*0}1jLY}q-s>}G)~MvEtKH5o1FE)6=s zP_56aa5Pf-K<_D@Ue$@>!5^7S9s3XS_*6*eu$bQ{S2%6i|F6^UqVvt@_j|q{bYE}x zQzob2V7oxljP|5HG4+%$hDRh!m(94kDtNu);#F#AJtrMq_%hhTFw;vj{m7XQb2eHX zR(P&-R4m+PYCzJ(NnYzR=D%9Ce&MlIrdRJQx!Lx4ajV$uZC8q(_l3P$_gk*&&8^_` z%xlebc+LNCDD%l?KAF3<_uAzh2c+`XoIG^Jq{lk@!m*0tgP$!vPBs=$dm_=o% zN-f>(rsd2tzUO>qrO!RCmTqsEZ6nFtyl(T4gXZr%!rau0>yJpgmOt>VJ1yh;O3$eL z*;~o%+9EdHiC-?5yb*|7_T2 zzv%L(_@qVNqE%g~Q%g2&t;y;zwA;=w_x5w&@_m^`yKWs^KdYxMa?xbb*cUsuZ<+Ms z{y~@H5w*M*dUL^{3ai_?VwLKB<25 z{r*XMS3c{S?Fu-*{b|kbWq)IKZ#uk~zeL_E{9eeMeXakx)_k8?P?8MF_qLuVc^eFPey4M}6+G(L_Ig6ykBUE*gk zFfg`eIy(n=Iy=M47zT!lIkgjQJq`zmwE71x4b|ck6Dd3qP`Xh;>(Po(4X4%s?Jcho zK3%fUxHMtO4hybztnBq-tNHZK?Xudz)%1YBWAWt4i@K*�O;vzHUAK+v5Ga!`0sz zoz@;PS)D9%q2#vDvE(GH&01`67h4r-UL0R>Mkm>Cl2Ar;{P!!KrQ%N`-~Rr$M$RlDwuCh#cYh>%K0K!Bs5>Wz*| z>n0~DdOqK1_RsOU{zPxZaKRoKZVl(=H@^=4fABqL?VTqr(?z-%=j!);HsoO`Ypl9j zxUXM!c^%V_`Hk9pU+Q0PnCX9MwXbdw%a=T6@$0_6H<|Uy8yeM}%~HcZT^1^`eDJqt zpCLsS+C#C9DBQBlHCStb$zJphgs>q}eKE zl#~=$>Fbx5m+O@q>*W`v>l<2HTIw4Z=^Gj87Nw-=7FXt#Bv$C=6)S^`fSBQuTAW;z zSx}OhpQivaGchT@w8U0PiAzC20cvLcqY zE^#d@!LOq@q_QAYKPa_0zqBYh)wL`&uS6Nuh@e!2pRihrYD7?K8j1la$#4f0losWH z!y_eGKQ$*cH#M)MSl>|35XH@)Y8*q6xebNBQOfGY6}bg^nVBh8mgW{lW(LN_y2&Z#iMl3{60Mx`bMlLV3lfu4ZIuiW!U35TsW}lYnYpQX z#hLkewn~N&uYvV|B_lBh!VThrnm9d$XshO^Usg(i52XNK-MIrh5Ikrlm zpi%(&5o{kw+BdZ%F(t7i5pJB3u7RPhfk}vwft7)Ym60i$alZK}nQ4`TRNH}yF&jvl z_sA?R$uFt|3qi`h;M77055mpK1gTa~PyiQSR*A`=ptDs<275CF>{7U7CYJP0bRvbD zQkX@FIS7NK=2&!Ea0$}BZf|0SFp@N2QVsd64s07hObwYVYY979T*C)bn z#ffF9Xg*8MNX$!5O|eyi7GkjAz~Qtq(t2$a|>e= zWAj8qgEUCurm~MAX~P(tHVmyyOrU9l4n8(aG%z+#H8#|>OinY=HAyx~)U`B8Gto^o zN=i&lPD!yeGeZkc>cla`#~8VR7#}C+=ar=vm7vFSL1Iy2ZfZ$tQL(L3T2X$kLSjKd zPG&N=7|}1wOM%w%@WMx-Bwqnhq!MFsN@`IiM)E?o7Va_y+Bks1)NN>PYGjdQVxpUB zX=$u$Vw9MqYnha6u4|lZkz|yTXqu903aLbBlDf%?YYKgwoR(y4nQCkXs%DdPP0Z3# zbuCN`O>`~IOj3>049yIa4DtKeJu|leT&^o0>lh#r5*8k zA7Vy6r41Tza6keBshMuar2r8Na&fccve5_k6+rz4Xn7B6xYH1W1Db~BgN+`w1RM;+ z5~IOIY)FCCjRqGu7>FfCgNxXZ0;?MhE^sgqON<5=u^|OkhcCFe5Cf8_c`3F^zl8U$cUU%X8uW1Dn*=ypAn6F8XTX7p`|-^vZIRrr&GK z`@zBy;-jwkbH*71JEjlIJJ{E5eOehCzDrbK*84UQW~0WyjE^*tx^{8e`5opxb)78&qol`;+0CS8chX4Qo literal 0 HcmV?d00001 diff --git a/Base/res/icons/16x16/download.png b/Base/res/icons/16x16/download.png new file mode 100644 index 0000000000000000000000000000000000000000..7836d3c34114d93642ea4d404d2df78009f22157 GIT binary patch literal 778 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7TQi-V13aCb6$*;-(=u~X z85lGs)=sqbI2<6->L0u`REtkcr0_&Q=|%;uM=L@#oLU34x4cUDbjd#B(u5^DEV$OO zve%2P=F>a3%W4N#(*ypF#giv5>Yh>&ACw{Zy7l;Pi}&*mSAS=8T6@G~b+XKblG{GV zl9Q}9Yq7;$Y*navaeT!Yon*gBLK)HV->-OR9!1 zivAMYFw6YHYhI$)cBt1UYOG$bQ#|*Yz@vyGLMj~r0gi&IH##n@o1CQR`Fx|FN7wKZ0tKaw8kcXwLvFd8!zJA%|bxc3zH)`*F zseip;rvIhYzPd#$U-Fp6ulxGmWY#NhXjFGLOAY^YS*XbJ!QY;Jn#^DBGTqI-cSq{E zMJ+>+$?7A#1qB>EPc*Cdp55KNw)pq<<%av^&7K$ax1@BxXJBApOY(MiVfYV%3-&Ib z%)r3FS>O>_%)p?h48n{ROYO@T7#P?~Jbhi+pK)?9X_<7IeF4R-WQl7;iF1B#Zfaf$ zgL6@8Vo7R>LV0FMhJw4NZ$Nk>pEv^p!$VIO#}JFtcPAP49WoGbogb*@D7w_Abw`tT zQSaKI#v0z}MIJSiecgB2GKA_V#wZptW#w;n@nc$jpzQZ<$@70c{`uLYzC*-yMy}>*T3h2f0>WTM}4&dm97e(vXTa??9H>&nMS}hCY0LT#@m^y~lHA>%~r6;&9m{ zXSeF|^=;?-zb;UjS-q~duC>PYr268yX^N*eX*OP~GINZ*?#z_^_B5Z#F@}!a{D*ey b{bReATCb-Padd_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 05e738a9b6..4f80ac56d9 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 08a56c6a4a..b57e21cb08 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 d2d9ca2c26..d9a335da4e 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); }));