mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 03:07:43 +00:00
LibGUI+WindowServer: Add "visible" state to GUI actions
This patch adds a visibility state to GUI::Action. All actions default to being visible. When invisible, they do not show up in toolbars on menus (and importantly, they don't occupy any space). This can be used to hide/show context-sensitive actions dynamically without rebuilding menus and toolbars. Thanks to Tim Slater for assuming that action visibility was a thing, which gave me a reason to implement it! :^)
This commit is contained in:
parent
df7c0eacd4
commit
49f5767789
13 changed files with 88 additions and 14 deletions
|
@ -127,7 +127,7 @@ void ConnectionFromClient::add_menu(i32 window_id, i32 menu_id)
|
|||
}
|
||||
|
||||
void ConnectionFromClient::add_menu_item(i32 menu_id, i32 identifier, i32 submenu_id,
|
||||
DeprecatedString const& text, bool enabled, bool checkable, bool checked, bool is_default,
|
||||
DeprecatedString const& text, bool enabled, bool visible, bool checkable, bool checked, bool is_default,
|
||||
DeprecatedString const& shortcut, Gfx::ShareableBitmap const& icon, bool exclusive)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
|
@ -142,6 +142,7 @@ void ConnectionFromClient::add_menu_item(i32 menu_id, i32 identifier, i32 submen
|
|||
menu_item->set_icon(icon.bitmap());
|
||||
menu_item->set_submenu_id(submenu_id);
|
||||
menu_item->set_exclusive(exclusive);
|
||||
menu_item->set_visible(visible);
|
||||
menu.add_item(move(menu_item));
|
||||
}
|
||||
|
||||
|
@ -172,7 +173,7 @@ void ConnectionFromClient::dismiss_menu(i32 menu_id)
|
|||
}
|
||||
|
||||
void ConnectionFromClient::update_menu_item(i32 menu_id, i32 identifier, [[maybe_unused]] i32 submenu_id,
|
||||
DeprecatedString const& text, bool enabled, bool checkable, bool checked, bool is_default,
|
||||
DeprecatedString const& text, bool enabled, bool visible, bool checkable, bool checked, bool is_default,
|
||||
DeprecatedString const& shortcut, Gfx::ShareableBitmap const& icon)
|
||||
{
|
||||
auto it = m_menus.find(menu_id);
|
||||
|
@ -190,6 +191,7 @@ void ConnectionFromClient::update_menu_item(i32 menu_id, i32 identifier, [[maybe
|
|||
menu_item->set_text(text);
|
||||
menu_item->set_shortcut_text(shortcut);
|
||||
menu_item->set_enabled(enabled);
|
||||
menu_item->set_visible(visible);
|
||||
menu_item->set_checkable(checkable);
|
||||
menu_item->set_default(is_default);
|
||||
if (checkable)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue