diff --git a/Userland/Services/WindowServer/Compositor.cpp b/Userland/Services/WindowServer/Compositor.cpp index f46c925976..c1ae95202d 100644 --- a/Userland/Services/WindowServer/Compositor.cpp +++ b/Userland/Services/WindowServer/Compositor.cpp @@ -504,7 +504,8 @@ void Compositor::compose() // Paint the window stack. if (m_invalidated_window) { - if (auto* fullscreen_window = wm.active_fullscreen_window()) { + auto* fullscreen_window = wm.active_fullscreen_window(); + if (fullscreen_window && fullscreen_window->is_opaque()) { compose_window(*fullscreen_window); fullscreen_window->clear_dirty_rects(); } else { @@ -1071,7 +1072,8 @@ void Compositor::recompute_occlusions() bool window_stack_transition_in_progress = m_transitioning_to_window_stack != nullptr; auto& main_screen = Screen::main(); - if (auto* fullscreen_window = wm.active_fullscreen_window()) { + auto* fullscreen_window = wm.active_fullscreen_window(); + if (fullscreen_window) { // TODO: support fullscreen windows on all screens auto screen_rect = main_screen.rect(); wm.for_each_visible_window_from_front_to_back([&](Window& w) { @@ -1099,7 +1101,8 @@ void Compositor::recompute_occlusions() }); m_opaque_wallpaper_rects.clear(); - } else { + } + if (!fullscreen_window || (fullscreen_window && !fullscreen_window->is_opaque())) { Gfx::DisjointRectSet visible_rects; visible_rects.add_many(Screen::rects()); bool have_transparent = false;