LibWebView+UI: Add option to render an icon for application submenus

This commit is contained in:
Timothy Flynn 2026-03-22 11:17:48 -04:00 committed by Tim Flynn
parent abaf255fc5
commit afcc0fdbb0
5 changed files with 11 additions and 0 deletions

View file

@ -184,6 +184,9 @@ public:
Span<MenuItem> items() { return m_items; }
ReadonlySpan<MenuItem> items() const { return m_items; }
void set_render_group_icon(bool render_group_icon) { m_render_group_icon = render_group_icon; }
bool render_group_icon() const { return m_render_group_icon; }
template<typename Callback>
void for_each_action(Callback const& callback)
{
@ -207,6 +210,7 @@ private:
Vector<MenuItem> m_items;
bool m_is_group { false };
bool m_render_group_icon { false };
};
}

View file

@ -256,6 +256,9 @@ static void add_items_to_menu(NSMenu* menu, Span<WebView::Menu::MenuItem> menu_i
keyEquivalent:@""];
[item setSubmenu:application_submenu];
if (submenu->render_group_icon())
set_control_image(item, @"folder");
[menu addItem:item];
},
[&](WebView::Separator) {

BIN
UI/Icons/folder.tvg Normal file

Binary file not shown.

View file

@ -255,6 +255,9 @@ static void add_items_to_menu(QMenu& menu, QWidget& parent, Span<WebView::Menu::
auto* qsubmenu = new QMenu(qstring_from_ak_string(submenu->title()), &menu);
add_items_to_menu(*qsubmenu, parent, submenu->items());
if (submenu->render_group_icon())
qsubmenu->setIcon(create_tvg_icon_with_theme_colors("folder", parent.palette()));
menu.addMenu(qsubmenu);
},
[&](WebView::Separator) {

View file

@ -3,6 +3,7 @@
<file>../Icons/ladybird.png</file>
<file>../Icons/back.tvg</file>
<file>../Icons/close.tvg</file>
<file>../Icons/folder.tvg</file>
<file>../Icons/forward.tvg</file>
<file>../Icons/hamburger.tvg</file>
<file>../Icons/new_tab.tvg</file>