mirror of
https://github.com/penpot/penpot.git
synced 2025-12-23 22:48:40 -05:00
Merge pull request #7852 from penpot/alotor-flex-issues
🐛 Fix flex problems in new render
This commit is contained in:
@@ -53,15 +53,6 @@ struct LayoutAxis {
|
||||
is_auto_across: bool,
|
||||
}
|
||||
|
||||
impl LayoutAxis {
|
||||
fn main_space(&self) -> f32 {
|
||||
self.main_size - self.padding_main_start - self.padding_main_end
|
||||
}
|
||||
fn across_space(&self) -> f32 {
|
||||
self.across_size - self.padding_across_start - self.padding_across_end
|
||||
}
|
||||
}
|
||||
|
||||
impl LayoutAxis {
|
||||
fn new(
|
||||
shape: &Shape,
|
||||
@@ -101,6 +92,13 @@ impl LayoutAxis {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main_space(&self) -> f32 {
|
||||
self.main_size - self.padding_main_start - self.padding_main_end
|
||||
}
|
||||
fn across_space(&self) -> f32 {
|
||||
self.across_size - self.padding_across_start - self.padding_across_end
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone)]
|
||||
@@ -624,6 +622,9 @@ pub fn reflow_flex_layout(
|
||||
}
|
||||
|
||||
result.push_back(Modifier::transform_propagate(child.id, transform));
|
||||
if child.has_layout() {
|
||||
result.push_back(Modifier::reflow(child.id));
|
||||
}
|
||||
|
||||
shape_anchor = next_anchor(
|
||||
layout_data,
|
||||
@@ -654,7 +655,11 @@ pub fn reflow_flex_layout(
|
||||
.iter()
|
||||
.map(|track| {
|
||||
let nshapes = usize::max(track.shapes.len(), 1);
|
||||
track.shapes.iter().map(|s| s.main_size).sum::<f32>()
|
||||
track
|
||||
.shapes
|
||||
.iter()
|
||||
.map(|s| s.margin_main_start + s.margin_main_end + s.main_size)
|
||||
.sum::<f32>()
|
||||
+ (nshapes as f32 - 1.0) * layout_axis.gap_main
|
||||
})
|
||||
.reduce(f32::max)
|
||||
|
||||
@@ -792,6 +792,9 @@ pub fn reflow_grid_layout(
|
||||
}
|
||||
|
||||
result.push_back(Modifier::transform_propagate(child.id, transform));
|
||||
if child.has_layout() {
|
||||
result.push_back(Modifier::reflow(child.id));
|
||||
}
|
||||
}
|
||||
|
||||
if shape.is_layout_horizontal_auto() || shape.is_layout_vertical_auto() {
|
||||
|
||||
@@ -59,18 +59,19 @@ pub extern "C" fn set_layout_child_data(
|
||||
is_absolute: bool,
|
||||
z_index: i32,
|
||||
) {
|
||||
let h_sizing = RawSizing::from(h_sizing);
|
||||
let v_sizing = RawSizing::from(v_sizing);
|
||||
let max_h = if has_max_h { Some(max_h) } else { None };
|
||||
let min_h = if has_min_h { Some(min_h) } else { None };
|
||||
let max_w = if has_max_w { Some(max_w) } else { None };
|
||||
let min_w = if has_min_w { Some(min_w) } else { None };
|
||||
|
||||
let raw_align_self = align::RawAlignSelf::from(align_self);
|
||||
|
||||
let align_self = raw_align_self.try_into().ok();
|
||||
|
||||
with_current_shape_mut!(state, |shape: &mut Shape| {
|
||||
let h_sizing = RawSizing::from(h_sizing);
|
||||
let v_sizing = RawSizing::from(v_sizing);
|
||||
|
||||
let max_h = if has_max_h { Some(max_h) } else { None };
|
||||
let min_h = if has_min_h { Some(min_h) } else { None };
|
||||
let max_w = if has_max_w { Some(max_w) } else { None };
|
||||
let min_w = if has_min_w { Some(min_w) } else { None };
|
||||
|
||||
let raw_align_self = align::RawAlignSelf::from(align_self);
|
||||
|
||||
let align_self = raw_align_self.try_into().ok();
|
||||
|
||||
shape.set_flex_layout_child_data(
|
||||
margin_top,
|
||||
margin_right,
|
||||
|
||||
Reference in New Issue
Block a user