1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 18:18:12 +00:00

WindowServer+LibGUI: Notify clients when menus become visible/hidden

This will allow clients to react to these events.
This commit is contained in:
Andreas Kling 2021-04-05 14:32:34 +02:00
parent 0315741815
commit 9b740f218b
8 changed files with 49 additions and 9 deletions

View file

@ -242,8 +242,7 @@ void MenuManager::close_everyone()
{
for (auto& menu : m_open_menu_stack) {
VERIFY(menu);
if (menu->menu_window())
menu->menu_window()->set_visible(false);
menu->set_visible(false);
menu->clear_hovered_item();
}
m_open_menu_stack.clear();
@ -270,8 +269,7 @@ void MenuManager::close_menus(const Vector<Menu*>& menus)
for (auto& menu : menus) {
if (menu == m_current_menu)
clear_current_menu();
if (menu->menu_window())
menu->menu_window()->set_visible(false);
menu->set_visible(false);
menu->clear_hovered_item();
m_open_menu_stack.remove_first_matching([&](auto& entry) {
return entry == menu;
@ -332,7 +330,7 @@ void MenuManager::open_menu(Menu& menu, bool as_current_menu)
menu.redraw_if_theme_changed();
if (!menu.menu_window())
menu.ensure_menu_window();
menu.menu_window()->set_visible(true);
menu.set_visible(true);
}
if (m_open_menu_stack.find_if([&menu](auto& other) { return &menu == other.ptr(); }).is_end())