diff --git a/crates/bevy_ui/src/update.rs b/crates/bevy_ui/src/update.rs index dd524be5172e76..d8cfcd5adf4b24 100644 --- a/crates/bevy_ui/src/update.rs +++ b/crates/bevy_ui/src/update.rs @@ -1,6 +1,6 @@ //! This module contains systems that update the UI when something changes -use crate::{CalculatedClip, OverflowAxis, Style}; +use crate::{CalculatedClip, OverflowAxis, Style, Display}; use super::Node; use bevy_ecs::{ @@ -35,13 +35,18 @@ fn update_clipping( children_query: &Query<&Children>, node_query: &mut Query<(&Node, &GlobalTransform, &Style, Option<&mut CalculatedClip>)>, entity: Entity, - maybe_inherited_clip: Option, + mut maybe_inherited_clip: Option, ) { let Ok((node, global_transform, style, maybe_calculated_clip)) = node_query.get_mut(entity) else { return; }; + // If `display` is None, clip the entire node and all its descendants by replacing the inherited clip with a default rect (which is empty) + if style.display == Display::None { + maybe_inherited_clip = Some(Rect::default()); + } + // Update this node's CalculatedClip component if let Some(mut calculated_clip) = maybe_calculated_clip { if let Some(inherited_clip) = maybe_inherited_clip {