From e887e185a756574752b8b1476eba9262c6eeda13 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Tue, 9 Dec 2025 13:31:18 +0100 Subject: [PATCH] shell/elements: Don't clip maximized windows/stacks --- src/shell/element/stack.rs | 13 +++++++++---- src/shell/element/window.rs | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/shell/element/stack.rs b/src/shell/element/stack.rs index bb7f784e..fc1e27b3 100644 --- a/src/shell/element/stack.rs +++ b/src/shell/element/stack.rs @@ -676,6 +676,10 @@ impl CosmicStack { let appearance = p.appearance_conf.lock().unwrap(); let tiled = p.tiled.load(Ordering::Acquire); + if windows[active].is_maximized(false) { + return None; + } + let round = appearance.clip_tiled_windows || !tiled; if tiled && !appearance.shadow_tiled_windows { return None; @@ -735,16 +739,15 @@ impl CosmicStack { &self.0, renderer, stack_loc, scale, alpha, ); - if !self.0.with_program(|p| p.tiled.load(Ordering::Acquire)) {} - elements.extend(self.0.with_program(|p| { let windows = p.windows.lock().unwrap(); let active = p.active.load(Ordering::SeqCst); let theme = p.theme.lock().unwrap(); let appearance = p.appearance_conf.lock().unwrap(); let tiled = p.tiled.load(Ordering::Acquire); + let maximized = windows[active].is_maximized(false); - let round = appearance.clip_tiled_windows || !tiled; + let round = (appearance.clip_tiled_windows || !tiled) && !maximized; let radii = round.then(|| { theme .cosmic() @@ -928,7 +931,9 @@ impl CosmicStack { let active_window = &p.windows.lock().unwrap()[p.active.load(Ordering::SeqCst)]; let is_tiled = p.tiled.load(Ordering::Acquire); let appearance = p.appearance_conf.lock().unwrap(); - let round = appearance.clip_tiled_windows || !is_tiled; + let maximized = active_window.is_maximized(false); + + let round = (appearance.clip_tiled_windows || !is_tiled) && !maximized; let radii = p .theme .lock() diff --git a/src/shell/element/window.rs b/src/shell/element/window.rs index 15ae315d..543c7d74 100644 --- a/src/shell/element/window.rs +++ b/src/shell/element/window.rs @@ -366,6 +366,10 @@ impl CosmicWindow { let activated = p.window.is_activated(false); let appearance = p.appearance_conf.lock().unwrap(); + if p.window.is_maximized(false) { + return None; + } + let clip = (!is_tiled && appearance.clip_floating_windows) || (is_tiled && appearance.clip_tiled_windows); let should_draw_shadow = if is_tiled { @@ -432,10 +436,11 @@ impl CosmicWindow { R::TextureId: Send + Clone + 'static, C: From>, { - let (has_ssd, is_tiled, mut radii, appearance) = self.0.with_program(|p| { + let (has_ssd, is_tiled, is_maximized, mut radii, appearance) = self.0.with_program(|p| { ( p.has_ssd(false), p.is_tiled(), + p.window.is_maximized(false), p.theme .lock() .unwrap() @@ -446,8 +451,9 @@ impl CosmicWindow { *p.appearance_conf.lock().unwrap(), ) }); - let clip = (!is_tiled && appearance.clip_floating_windows) - || (is_tiled && appearance.clip_tiled_windows); + let clip = ((!is_tiled && appearance.clip_floating_windows) + || (is_tiled && appearance.clip_tiled_windows)) + && !is_maximized; if has_ssd && !clip { // bottom corners radii[1] = 0; @@ -602,8 +608,9 @@ impl CosmicWindow { let is_tiled = p.is_tiled(); let appearance = p.appearance_conf.lock().unwrap(); - let round = (!is_tiled && appearance.clip_floating_windows) - || (is_tiled && appearance.clip_tiled_windows); + let round = ((!is_tiled && appearance.clip_floating_windows) + || (is_tiled && appearance.clip_tiled_windows)) + && !p.window.is_maximized(false); let radii = p .theme .lock()