diff --git a/src/shell/layout/tiling/mod.rs b/src/shell/layout/tiling/mod.rs index 5d44d4bf..f0fc552b 100644 --- a/src/shell/layout/tiling/mod.rs +++ b/src/shell/layout/tiling/mod.rs @@ -3160,6 +3160,9 @@ impl TilingLayout { if !mapped.bbox().contains((location - geo.loc).as_logical()) { continue; } + if mapped.is_maximized(false) { + continue; + } if let Some((target, surface_offset)) = mapped.focus_under( (location_f64 - geo.loc.to_f64()).as_logical() + mapped.geometry().loc.to_f64(), WindowSurfaceType::POPUP | WindowSurfaceType::SUBSURFACE, @@ -3190,6 +3193,9 @@ impl TilingLayout { if !mapped.bbox().contains((location - geo.loc).as_logical()) { continue; } + if mapped.is_maximized(false) { + continue; + } if let Some((target, surface_offset)) = mapped.focus_under( (location_f64 - geo.loc.to_f64()).as_logical() + mapped.geometry().loc.to_f64(), WindowSurfaceType::TOPLEVEL | WindowSurfaceType::SUBSURFACE, @@ -5045,6 +5051,7 @@ fn render_old_tree( _ => unreachable!(), }, ) + .filter(|(mapped, _, _, _)| !mapped.is_maximized(false)) .filter(|(mapped, _, _, _)| { if let Some(root) = target_tree.root_node_id() { is_swap_mode @@ -5707,6 +5714,11 @@ fn render_new_tree( (new_geo, percentage, false) }; + if let Data::Mapped { mapped, .. } = data { + if mapped.is_maximized(false) { + return; + } + } processor(node_id, data, geo, original_geo, alpha, animating) }); } diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index ffae76d1..784a4e52 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -1107,6 +1107,9 @@ impl Workspace { pub fn node_desc(&self, focus: KeyboardFocusTarget) -> Option { match focus { KeyboardFocusTarget::Element(mapped) => { + if mapped.is_maximized(false) { + return None; + } self.tiling_layer.mapped().find_map(|(m, _)| { if m == &mapped { mapped