refactor: deconstruct Flattened for more speakable variables
This commit is contained in:
+17
-12
@@ -228,12 +228,12 @@ where
|
|||||||
|
|
||||||
let mut end = start;
|
let mut end = start;
|
||||||
let mut height = 0;
|
let mut height = 0;
|
||||||
for item in visible.iter().skip(start) {
|
for Flattened { item, .. } in visible.iter().skip(start) {
|
||||||
if height + item.item.height() > available_height {
|
if height + item.height() > available_height {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
height += item.item.height();
|
height += item.height();
|
||||||
end += 1;
|
end += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,22 +263,27 @@ where
|
|||||||
let mut current_height = 0;
|
let mut current_height = 0;
|
||||||
let has_selection = !state.selected.is_empty();
|
let has_selection = !state.selected.is_empty();
|
||||||
#[allow(clippy::cast_possible_truncation)]
|
#[allow(clippy::cast_possible_truncation)]
|
||||||
for item in visible.iter().skip(state.offset).take(end - start) {
|
for flattened in visible.into_iter().skip(state.offset).take(end - start) {
|
||||||
|
let Flattened {
|
||||||
|
ref identifier,
|
||||||
|
item,
|
||||||
|
} = flattened;
|
||||||
|
|
||||||
let x = area.x;
|
let x = area.x;
|
||||||
let y = area.y + current_height;
|
let y = area.y + current_height;
|
||||||
current_height += item.item.height() as u16;
|
current_height += item.height() as u16;
|
||||||
|
|
||||||
let area = Rect {
|
let area = Rect {
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
width: area.width,
|
width: area.width,
|
||||||
height: item.item.height() as u16,
|
height: item.height() as u16,
|
||||||
};
|
};
|
||||||
|
|
||||||
let item_style = self.style.patch(item.item.style);
|
let item_style = self.style.patch(item.style);
|
||||||
buf.set_style(area, item_style);
|
buf.set_style(area, item_style);
|
||||||
|
|
||||||
let is_selected = state.selected == item.identifier;
|
let is_selected = state.selected == *identifier;
|
||||||
let after_highlight_symbol_x = if has_selection {
|
let after_highlight_symbol_x = if has_selection {
|
||||||
let symbol = if is_selected {
|
let symbol = if is_selected {
|
||||||
self.highlight_symbol
|
self.highlight_symbol
|
||||||
@@ -292,7 +297,7 @@ where
|
|||||||
};
|
};
|
||||||
|
|
||||||
let after_depth_x = {
|
let after_depth_x = {
|
||||||
let indent_width = item.depth() * 2;
|
let indent_width = flattened.depth() * 2;
|
||||||
let (after_indent_x, _) = buf.set_stringn(
|
let (after_indent_x, _) = buf.set_stringn(
|
||||||
after_highlight_symbol_x,
|
after_highlight_symbol_x,
|
||||||
y,
|
y,
|
||||||
@@ -300,9 +305,9 @@ where
|
|||||||
indent_width,
|
indent_width,
|
||||||
item_style,
|
item_style,
|
||||||
);
|
);
|
||||||
let symbol = if item.item.children.is_empty() {
|
let symbol = if item.children.is_empty() {
|
||||||
self.node_no_children_symbol
|
self.node_no_children_symbol
|
||||||
} else if state.opened.contains(&item.identifier) {
|
} else if state.opened.contains(identifier) {
|
||||||
self.node_open_symbol
|
self.node_open_symbol
|
||||||
} else {
|
} else {
|
||||||
self.node_closed_symbol
|
self.node_closed_symbol
|
||||||
@@ -314,7 +319,7 @@ where
|
|||||||
};
|
};
|
||||||
|
|
||||||
let max_element_width = area.width.saturating_sub(after_depth_x - x);
|
let max_element_width = area.width.saturating_sub(after_depth_x - x);
|
||||||
for (j, line) in item.item.text.lines.iter().enumerate() {
|
for (j, line) in item.text.lines.iter().enumerate() {
|
||||||
buf.set_line(after_depth_x, y + j as u16, line, max_element_width);
|
buf.set_line(after_depth_x, y + j as u16, line, max_element_width);
|
||||||
}
|
}
|
||||||
if is_selected {
|
if is_selected {
|
||||||
|
|||||||
Reference in New Issue
Block a user