From c1827d976614e26a44317791ac981a4d8e7b5c58 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 19 May 2020 17:59:13 +0200 Subject: [PATCH] WindowServer: Ignore overlap when compositing full-screen windows Normally we walk the window stack to see if a given dirty rect is covered by an opaque window. When the active window is full-screened, we can skip this check and just unconditionally paint the window. This fixes an issue where windows with higher inherent z-order (like the taskbar and menu windows) would get cursor ghosting in them while a normal window was full-screened. Fixes #2289. --- Services/WindowServer/Compositor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Services/WindowServer/Compositor.cpp b/Services/WindowServer/Compositor.cpp index 4e1d1b6c98..6d5e53fd72 100644 --- a/Services/WindowServer/Compositor.cpp +++ b/Services/WindowServer/Compositor.cpp @@ -172,7 +172,7 @@ void Compositor::compose() m_back_painter->add_clip_rect(window.frame().rect()); RefPtr backing_store = window.backing_store(); for (auto& dirty_rect : dirty_rects.rects()) { - if (wm.any_opaque_window_above_this_one_contains_rect(window, dirty_rect)) + if (!window.is_fullscreen() && wm.any_opaque_window_above_this_one_contains_rect(window, dirty_rect)) continue; Gfx::PainterStateSaver saver(*m_back_painter); m_back_painter->add_clip_rect(dirty_rect);