From 6385799d61b64c4ff17b58d2d78211d6ebc74630 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Thu, 20 Apr 2023 12:03:18 +0100 Subject: [PATCH] Revert "changes:" This reverts commit 96903e54ee48df58a98f5110fece4d6edfb75dc0. --- crates/bevy_ui/src/layout/mod.rs | 23 ++++++++++++----------- crates/bevy_ui/src/measurement.rs | 24 +++++++++++------------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/crates/bevy_ui/src/layout/mod.rs b/crates/bevy_ui/src/layout/mod.rs index 9cab3506518ab..4429a73511f6d 100644 --- a/crates/bevy_ui/src/layout/mod.rs +++ b/crates/bevy_ui/src/layout/mod.rs @@ -17,7 +17,11 @@ use bevy_transform::components::Transform; use bevy_utils::HashMap; use bevy_window::{PrimaryWindow, Window, WindowResolution, WindowScaleFactorChanged}; use std::fmt; -use taffy::{node::Measurable, prelude::Size, style_helpers::TaffyMaxContent, Taffy}; +use taffy::{ + prelude::Size, + style_helpers::TaffyMaxContent, + Taffy, +}; pub struct LayoutContext { pub scale_factor: f64, @@ -87,14 +91,11 @@ impl UiSurface { } } - pub fn update_measure(&mut self, entity: Entity, measure_func: Box) { - let taffy_node = self.entity_to_taffy.get(&entity).unwrap(); - self.taffy - .set_measure( - *taffy_node, - Some(taffy::node::MeasureFunc::Boxed(measure_func)), - ) - .ok(); + pub fn update_measure(&mut self, entity: Entity, content_size: &mut ContentSize) { + if let Some(measure_func) = content_size.measure_func.take() { + let taffy_node = self.entity_to_taffy.get(&entity).unwrap(); + self.taffy.set_measure(*taffy_node, Some(taffy::node::MeasureFunc::Boxed(measure_func))).ok(); + } } pub fn update_children(&mut self, entity: Entity, children: &Children) { @@ -266,8 +267,8 @@ pub fn ui_layout_system( } for (entity, mut content_size) in measure_query.iter_mut() { - if let Some(measure_func) = content_size.measure_func.take() { - ui_surface.update_measure(entity, measure_func); + if content_size.is_changed() { + ui_surface.update_measure(entity, &mut content_size); } } diff --git a/crates/bevy_ui/src/measurement.rs b/crates/bevy_ui/src/measurement.rs index a41bb4c851e7a..45eceb2a830f8 100644 --- a/crates/bevy_ui/src/measurement.rs +++ b/crates/bevy_ui/src/measurement.rs @@ -2,8 +2,8 @@ use bevy_ecs::prelude::Component; use bevy_ecs::reflect::ReflectComponent; use bevy_math::Vec2; use bevy_reflect::Reflect; -use std::fmt::Formatter; use taffy::node::Measurable; +use std::fmt::Formatter; pub use taffy::style::AvailableSpace; impl std::fmt::Debug for ContentSize { @@ -51,23 +51,20 @@ impl Measure for FixedMeasure { pub struct ContentSize { /// The `Measure` used to compute the intrinsic size #[reflect(ignore)] - pub(crate) measure_func: Option>, + pub (crate) measure_func: Option>, } impl ContentSize { pub fn new(measure: impl Measure) -> Self { - let measure_func = - move |size: taffy::prelude::Size>, - available: taffy::prelude::Size| { - let size = - measure.measure(size.width, size.height, available.width, available.height); - taffy::prelude::Size { - width: size.x, - height: size.y, - } - }; + let measure_func = move |size: taffy::prelude::Size>, available: taffy::prelude::Size| { + let size = measure.measure(size.width, size.height, available.width, available.height); + taffy::prelude::Size { + width: size.x, + height: size.y, + } + }; Self { - measure_func: Some(Box::new(measure_func)), + measure_func: Some(Box::new(measure_func)) } } } @@ -78,3 +75,4 @@ impl Default for ContentSize { Self::new(FixedMeasure::default()) } } +