Give UI nodes with Display::None an empty clipping rect (#10942)
# Objective Outlines are drawn for UI nodes with `Display::None` set and their descendants. They should not be visible. ## Solution Make all Nodes with `Display::None` inherit an empty clipping rect, ensuring that the outlines are not visible. Fixes #10940 --- ## Changelog * In `update_clipping_system` if a node has `Display::None` set, clip the entire node and all its descendants by replacing the inherited clip with a default rect (which is empty)
This commit is contained in:
parent
1142d53a99
commit
efb4fa5d61
@ -1,6 +1,6 @@
|
|||||||
//! This module contains systems that update the UI when something changes
|
//! This module contains systems that update the UI when something changes
|
||||||
|
|
||||||
use crate::{CalculatedClip, OverflowAxis, Style};
|
use crate::{CalculatedClip, Display, OverflowAxis, Style};
|
||||||
|
|
||||||
use super::Node;
|
use super::Node;
|
||||||
use bevy_ecs::{
|
use bevy_ecs::{
|
||||||
@ -35,13 +35,18 @@ fn update_clipping(
|
|||||||
children_query: &Query<&Children>,
|
children_query: &Query<&Children>,
|
||||||
node_query: &mut Query<(&Node, &GlobalTransform, &Style, Option<&mut CalculatedClip>)>,
|
node_query: &mut Query<(&Node, &GlobalTransform, &Style, Option<&mut CalculatedClip>)>,
|
||||||
entity: Entity,
|
entity: Entity,
|
||||||
maybe_inherited_clip: Option<Rect>,
|
mut maybe_inherited_clip: Option<Rect>,
|
||||||
) {
|
) {
|
||||||
let Ok((node, global_transform, style, maybe_calculated_clip)) = node_query.get_mut(entity)
|
let Ok((node, global_transform, style, maybe_calculated_clip)) = node_query.get_mut(entity)
|
||||||
else {
|
else {
|
||||||
return;
|
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
|
// Update this node's CalculatedClip component
|
||||||
if let Some(mut calculated_clip) = maybe_calculated_clip {
|
if let Some(mut calculated_clip) = maybe_calculated_clip {
|
||||||
if let Some(inherited_clip) = maybe_inherited_clip {
|
if let Some(inherited_clip) = maybe_inherited_clip {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user