1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-15 08:02:09 +00:00

WindowServer: Close all menus belonging to a client when it disconnects

Previously we would be left with a menu stack containing nulled-out
WeakPtr's to menus in the now-disconnected clients.

This was tripping up an assertion when clicking anywhere after shutting
down a program while it had a menu open.
This commit is contained in:
Andreas Kling 2020-01-02 20:03:32 +01:00
parent 9fe316c2d8
commit 0ac95ec510
3 changed files with 12 additions and 0 deletions

View file

@ -171,6 +171,15 @@ void WSMenuManager::set_needs_window_resize()
m_needs_window_resize = true;
}
void WSMenuManager::close_all_menus_from_client(Badge<WSClientConnection>, WSClientConnection & client)
{
if (m_open_menu_stack.is_empty())
return;
if (m_open_menu_stack.first()->client() != &client)
return;
close_everyone();
}
void WSMenuManager::close_everyone()
{
for (auto& menu : m_open_menu_stack) {