diff options
author | John Bundgaard <2511912+jbdk@users.noreply.github.com> | 2023-01-05 05:42:36 +0100 |
---|---|---|
committer | Sam Atkins <atkinssj@gmail.com> | 2023-02-17 16:18:14 +0000 |
commit | 091dbec2956b140c61b840f6b3b2d549d825099f (patch) | |
tree | a6fc1bc4af9f6e0d754ef1bee595ef4b5e120304 /Userland/Services/WindowServer | |
parent | 89a8a198b219ca012a6fd73f16f62a282119ed12 (diff) | |
download | serenity-091dbec2956b140c61b840f6b3b2d549d825099f.zip |
WindowServer: Show window switcher even if fullscreen window is active
Diffstat (limited to 'Userland/Services/WindowServer')
-rw-r--r-- | Userland/Services/WindowServer/Compositor.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/Userland/Services/WindowServer/Compositor.cpp b/Userland/Services/WindowServer/Compositor.cpp index 52b9f8398e..6acc5300ee 100644 --- a/Userland/Services/WindowServer/Compositor.cpp +++ b/Userland/Services/WindowServer/Compositor.cpp @@ -13,6 +13,7 @@ #include "Screen.h" #include "Window.h" #include "WindowManager.h" +#include "WindowSwitcher.h" #include <AK/Debug.h> #include <AK/Memory.h> #include <AK/ScopeGuard.h> @@ -541,7 +542,8 @@ void Compositor::compose() // Paint the window stack. if (m_invalidated_window) { auto* fullscreen_window = wm.active_fullscreen_window(); - if (fullscreen_window && fullscreen_window->is_opaque()) { + // FIXME: Remove the !WindowSwitcher::the().is_visible() check when WindowSwitcher is an overlay + if (fullscreen_window && fullscreen_window->is_opaque() && !WindowSwitcher::the().is_visible()) { compose_window(*fullscreen_window); fullscreen_window->clear_dirty_rects(); } else { @@ -1184,7 +1186,8 @@ void Compositor::recompute_occlusions() bool window_stack_transition_in_progress = m_transitioning_to_window_stack != nullptr; auto& main_screen = Screen::main(); auto* fullscreen_window = wm.active_fullscreen_window(); - if (fullscreen_window) { + // FIXME: Remove the !WindowSwitcher::the().is_visible() check when WindowSwitcher is an overlay + if (fullscreen_window && !WindowSwitcher::the().is_visible()) { // TODO: support fullscreen windows on all screens auto screen_rect = main_screen.rect(); wm.for_each_visible_window_from_front_to_back([&](Window& w) { @@ -1214,7 +1217,8 @@ void Compositor::recompute_occlusions() m_opaque_wallpaper_rects.clear(); } - if (!fullscreen_window || (fullscreen_window && !fullscreen_window->is_opaque())) { + // FIXME: Remove the WindowSwitcher::the().is_visible() check when WindowSwitcher is an overlay + if (!fullscreen_window || WindowSwitcher::the().is_visible() || (fullscreen_window && !fullscreen_window->is_opaque())) { Gfx::DisjointIntRectSet remaining_visible_screen_rects; remaining_visible_screen_rects.add_many(Screen::rects()); bool have_transparent = false; |