mirror of
https://github.com/zed-industries/zed.git
synced 2025-01-11 21:13:02 +00:00
Don't render sample item twice in UniformList
This commit is contained in:
parent
56e4591d6f
commit
c33d554675
1 changed files with 26 additions and 9 deletions
|
@ -162,7 +162,6 @@ where
|
|||
"UniformList does not support being rendered with an unconstrained height"
|
||||
);
|
||||
}
|
||||
let mut items = Vec::new();
|
||||
|
||||
if self.item_count == 0 {
|
||||
return (
|
||||
|
@ -170,22 +169,27 @@ where
|
|||
LayoutState {
|
||||
item_height: 0.,
|
||||
scroll_max: 0.,
|
||||
items,
|
||||
items: Default::default(),
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
let mut items = Vec::new();
|
||||
let mut size = constraint.max;
|
||||
let mut item_size;
|
||||
if let Some(sample_item_ix) = self.get_width_from_item {
|
||||
(self.append_items)(sample_item_ix..sample_item_ix + 1, &mut items, cx);
|
||||
let sample_item = items.get_mut(0).unwrap();
|
||||
let sample_item_ix;
|
||||
let mut sample_item;
|
||||
if let Some(sample_ix) = self.get_width_from_item {
|
||||
(self.append_items)(sample_ix..sample_ix + 1, &mut items, cx);
|
||||
sample_item_ix = sample_ix;
|
||||
sample_item = items.pop().unwrap();
|
||||
item_size = sample_item.layout(constraint, cx);
|
||||
size.set_x(item_size.x());
|
||||
} else {
|
||||
(self.append_items)(0..1, &mut items, cx);
|
||||
let first_item = items.first_mut().unwrap();
|
||||
item_size = first_item.layout(
|
||||
sample_item_ix = 0;
|
||||
sample_item = items.pop().unwrap();
|
||||
item_size = sample_item.layout(
|
||||
SizeConstraint::new(
|
||||
vec2f(constraint.max.x(), 0.0),
|
||||
vec2f(constraint.max.x(), f32::INFINITY),
|
||||
|
@ -219,8 +223,21 @@ where
|
|||
self.item_count,
|
||||
start + (size.y() / item_height).ceil() as usize + 1,
|
||||
);
|
||||
items.clear();
|
||||
(self.append_items)(start..end, &mut items, cx);
|
||||
|
||||
if (start..end).contains(&sample_item_ix) {
|
||||
if sample_item_ix > start {
|
||||
(self.append_items)(start..sample_item_ix, &mut items, cx);
|
||||
}
|
||||
|
||||
items.push(sample_item);
|
||||
|
||||
if sample_item_ix < end {
|
||||
(self.append_items)(sample_item_ix + 1..end, &mut items, cx);
|
||||
}
|
||||
} else {
|
||||
(self.append_items)(start..end, &mut items, cx);
|
||||
}
|
||||
|
||||
for item in &mut items {
|
||||
let item_size = item.layout(item_constraint, cx);
|
||||
if item_size.x() > size.x() {
|
||||
|
|
Loading…
Reference in a new issue