1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 08:07:34 +00:00

WindowServer: Add request_close_fragile_windows() helper

This commit is contained in:
thankyouverycool 2022-11-17 10:31:53 -05:00 committed by Andreas Kling
parent c23adeaaf7
commit 35bd79701c
2 changed files with 23 additions and 2 deletions

View file

@ -2388,4 +2388,14 @@ Window* WindowManager::foremost_popup_window(WindowStack& stack)
return popup_window;
}
void WindowManager::request_close_fragile_windows(WindowStack& stack)
{
for_each_visible_window_from_back_to_front([&](Window& window) {
if (is_fragile_window_type(window.type()))
window.request_close();
return IterationDecision::Continue;
},
&stack);
}
}

View file

@ -99,6 +99,7 @@ public:
}
Window* foremost_popup_window(WindowStack& stack = WindowManager::the().current_window_stack());
void request_close_fragile_windows(WindowStack& stack = WindowManager::the().current_window_stack());
Window* active_input_window()
{
VERIFY(m_current_window_stack);
@ -301,14 +302,24 @@ public:
{
switch (window_type) {
case WindowType::Normal:
case WindowType::Tooltip:
case WindowType::Popup:
return false;
default:
return true;
}
}
static constexpr bool is_fragile_window_type(WindowType window_type)
{
switch (window_type) {
case WindowType::Autocomplete:
case WindowType::Popup:
case WindowType::Tooltip:
return true;
default:
return false;
}
}
void did_switch_window_stack(Badge<Compositor>, WindowStack&, WindowStack&);
template<typename Callback>