diff options
Diffstat (limited to 'Userland/Services/WindowServer')
-rw-r--r-- | Userland/Services/WindowServer/WindowManager.cpp | 14 | ||||
-rw-r--r-- | Userland/Services/WindowServer/WindowManager.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Userland/Services/WindowServer/WindowManager.cpp b/Userland/Services/WindowServer/WindowManager.cpp index 7de186e7a5..08ff9482ff 100644 --- a/Userland/Services/WindowServer/WindowManager.cpp +++ b/Userland/Services/WindowServer/WindowManager.cpp @@ -2374,4 +2374,18 @@ bool WindowManager::sync_config_to_disk() return true; } +Window* WindowManager::foremost_popup_window(WindowStack& stack) +{ + Window* popup_window = nullptr; + for_each_visible_window_from_front_to_back([&](Window& window) { + if (window.type() == WindowType::Popup) { + popup_window = &window; + return IterationDecision::Break; + } + return IterationDecision::Continue; + }, + &stack); + return popup_window; +} + } diff --git a/Userland/Services/WindowServer/WindowManager.h b/Userland/Services/WindowServer/WindowManager.h index 1d5b665db7..5b05fbc804 100644 --- a/Userland/Services/WindowServer/WindowManager.h +++ b/Userland/Services/WindowServer/WindowManager.h @@ -98,6 +98,7 @@ public: return m_current_window_stack->active_window(); } + Window* foremost_popup_window(WindowStack& stack = WindowManager::the().current_window_stack()); Window* active_input_window() { VERIFY(m_current_window_stack); |