summaryrefslogtreecommitdiff
path: root/Userland/Services/WindowServer
diff options
context:
space:
mode:
authorJohn Bundgaard <2511912+jbdk@users.noreply.github.com>2023-01-05 05:42:36 +0100
committerSam Atkins <atkinssj@gmail.com>2023-02-17 16:18:14 +0000
commit091dbec2956b140c61b840f6b3b2d549d825099f (patch)
treea6fc1bc4af9f6e0d754ef1bee595ef4b5e120304 /Userland/Services/WindowServer
parent89a8a198b219ca012a6fd73f16f62a282119ed12 (diff)
downloadserenity-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.cpp10
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;