From b8807a541f151b430d820f26a58f1f1b168ca818 Mon Sep 17 00:00:00 2001 From: Graham Walker Date: Tue, 14 Jul 2026 21:05:01 -0400 Subject: [PATCH] Fix detached active window hint --- src/shell/layout/floating/mod.rs | 87 ++++++++++++++++---------------- 1 file changed, 44 insertions(+), 43 deletions(-) diff --git a/src/shell/layout/floating/mod.rs b/src/shell/layout/floating/mod.rs index 2102ddcd..95d7264d 100644 --- a/src/shell/layout/floating/mod.rs +++ b/src/shell/layout/floating/mod.rs @@ -1522,49 +1522,6 @@ impl FloatingLayout { .unwrap_or_else(|| (self.space.element_geometry(elem).unwrap().as_local(), alpha)); let render_location = geometry.loc - elem.geometry().loc.as_local(); - if focused == Some(elem) && !elem.is_maximized(false) { - let active_window_hint = crate::theme::active_window_hint(theme); - let radius = elem.corner_radius(geometry.size.as_logical(), indicator_thickness); - - if let Some((mode, resize)) = resize_indicator.as_mut() { - let mut resize_geometry = geometry; - resize_geometry.loc -= (18, 18).into(); - resize_geometry.size += (36, 36).into(); - - resize.resize(resize_geometry.size.as_logical()); - resize.output_enter(output); - resize.push_render_elements( - renderer, - resize_geometry - .loc - .as_logical() - .to_physical_precise_round(output_scale), - output_scale.into(), - alpha * mode.alpha().unwrap_or(1.0), - &mut |elem| push(CosmicMappedRenderElement::Window(elem.into())), - None, - ); - } - - if indicator_thickness > 0 { - let element = IndicatorShader::focus_element( - renderer, - Key::Window(Usage::FocusIndicator, elem.key()), - geometry, - indicator_thickness, - radius, - alpha, - output_scale, - [ - active_window_hint.red, - active_window_hint.green, - active_window_hint.blue, - ], - ); - push(element.into()); - } - } - let maybe_map = if let Some(anim) = self.animations.get(elem) { let original_geo = anim.previous_geometry(); geometry = anim.geometry( @@ -1629,6 +1586,50 @@ impl FloatingLayout { } else { None }; + + if focused == Some(elem) && !elem.is_maximized(false) { + let active_window_hint = crate::theme::active_window_hint(theme); + let radius = elem.corner_radius(geometry.size.as_logical(), indicator_thickness); + + if let Some((mode, resize)) = resize_indicator.as_mut() { + let mut resize_geometry = geometry; + resize_geometry.loc -= (18, 18).into(); + resize_geometry.size += (36, 36).into(); + + resize.resize(resize_geometry.size.as_logical()); + resize.output_enter(output); + resize.push_render_elements( + renderer, + resize_geometry + .loc + .as_logical() + .to_physical_precise_round(output_scale), + output_scale.into(), + alpha * mode.alpha().unwrap_or(1.0), + &mut |elem| push(CosmicMappedRenderElement::Window(elem.into())), + None, + ); + } + + if indicator_thickness > 0 { + let element = IndicatorShader::focus_element( + renderer, + Key::Window(Usage::FocusIndicator, elem.key()), + geometry, + indicator_thickness, + radius, + alpha, + output_scale, + [ + active_window_hint.red, + active_window_hint.green, + active_window_hint.blue, + ], + ); + push(element.into()); + } + } + let map_anim = |elem| { if let Some(map) = maybe_map { map(elem)