Simplify EditorElement::layout_blocks

This commit is contained in:
Antonio Scandurra
2022-06-10 13:57:43 +02:00
parent 666ea61dbc
commit f91fb48a4c

View File

@@ -791,7 +791,7 @@ impl EditorElement {
&mut self,
rows: Range<u32>,
snapshot: &EditorSnapshot,
width: f32,
editor_width: f32,
scroll_width: f32,
gutter_padding: f32,
gutter_width: f32,
@@ -959,11 +959,11 @@ impl EditorElement {
element
};
let mut max_width = width.max(scroll_width);
let mut fixed_block_max_width = 0f32;
let mut blocks = Vec::new();
for (row, block) in fixed_blocks {
let element = render_block(block, f32::INFINITY);
max_width = max_width.max(element.size().x() + em_width);
fixed_block_max_width = fixed_block_max_width.max(element.size().x() + em_width);
blocks.push(BlockLayout {
row,
element,
@@ -976,9 +976,11 @@ impl EditorElement {
TransformBlock::ExcerptHeader { .. } => BlockStyle::Sticky,
};
let width = match style {
BlockStyle::Sticky => editor_width,
BlockStyle::Flex => editor_width
.max(fixed_block_max_width)
.max(gutter_width + scroll_width),
BlockStyle::Fixed => unreachable!(),
BlockStyle::Sticky => width,
BlockStyle::Flex => max_width,
};
let element = render_block(block, width);
blocks.push(BlockLayout {
@@ -987,7 +989,10 @@ impl EditorElement {
style,
});
}
(max_width, blocks)
(
scroll_width.max(fixed_block_max_width - gutter_width),
blocks,
)
}
}
@@ -1176,13 +1181,13 @@ impl Element for EditorElement {
cx.text_layout_cache,
)
.width();
let mut scroll_width = longest_line_width.max(max_visible_line_width) + overscroll.x();
let scroll_width = longest_line_width.max(max_visible_line_width) + overscroll.x();
let em_width = style.text.em_width(cx.font_cache);
let (blocks_max_width, blocks) = self.layout_blocks(
let (scroll_width, blocks) = self.layout_blocks(
start_row..end_row,
&snapshot,
size.x(),
scroll_width + gutter_width,
scroll_width,
gutter_padding,
gutter_width,
em_width,
@@ -1192,7 +1197,6 @@ impl Element for EditorElement {
&line_layouts,
cx,
);
scroll_width = scroll_width.max(blocks_max_width - gutter_width);
let max_row = snapshot.max_point().row();
let scroll_max = vec2f(