fix(widgets/list): stop highlighting blank placeholders

pull/268/head
Florian Dehau 4 years ago
parent e81af75427
commit 4f728d363f

@ -114,7 +114,7 @@ where
let tasks = List::new(tasks)
.block(Block::default().borders(Borders::ALL).title("List"))
.highlight_style(Style::default().fg(Color::Yellow).modifier(Modifier::BOLD))
.highlight_symbol(">");
.highlight_symbol("> ");
f.render_stateful_widget(tasks, chunks[0], &mut app.tasks.state);
// Draw logs

@ -195,16 +195,11 @@ where
list_area.width as usize,
highlight_style,
);
(x + 1, Some(highlight_style))
(x, Some(highlight_style))
} else {
let (x, _) = buf.set_stringn(
x,
y,
&blank_symbol,
list_area.width as usize,
highlight_style,
);
(x + 1, None)
let (x, _) =
buf.set_stringn(x, y, &blank_symbol, list_area.width as usize, self.style);
(x, None)
}
} else {
(x, None)

@ -0,0 +1,34 @@
use tui::{
backend::TestBackend,
buffer::Buffer,
style::{Color, Style},
widgets::{List, ListState, Text},
Terminal,
};
#[test]
fn it_should_highlight_the_selected_item() {
let backend = TestBackend::new(10, 3);
let mut terminal = Terminal::new(backend).unwrap();
let mut state = ListState::default();
state.select(Some(1));
terminal
.draw(|mut f| {
let size = f.size();
let items = vec![
Text::raw("Item 1"),
Text::raw("Item 2"),
Text::raw("Item 3"),
];
let list = List::new(items.into_iter())
.highlight_style(Style::default().bg(Color::Yellow))
.highlight_symbol(">> ");
f.render_stateful_widget(list, size, &mut state);
})
.unwrap();
let mut expected = Buffer::with_lines(vec![" Item 1 ", ">> Item 2 ", " Item 3 "]);
for x in 0..9 {
expected.get_mut(x, 1).set_bg(Color::Yellow);
}
assert_eq!(*terminal.backend().buffer(), expected);
}
Loading…
Cancel
Save