adding offset for prevent panic

panic reason is closure move in filterd_candidates

if tui::ts PR merged, and component will not need to have offset flag

@see: https://github.com/fdehau/tui-rs/pull/408
pull/145/head
kyoto7250 2 years ago
parent b13e4bb255
commit 6f38dc9653

@ -19,6 +19,7 @@ const ALL_RESERVED_WORDS: &[&str] = &[
pub struct CompletionComponent {
key_config: KeyConfig,
state: ListState,
offset: bool,
word: String,
candidates: Vec<String>,
}
@ -37,13 +38,14 @@ impl CompletionComponent {
.map(|w| w.to_string())
.collect()
},
offset: false,
}
}
pub fn update(&mut self, word: impl Into<String>) {
self.word = word.into();
self.state.select(None);
self.state.select(Some(0))
self.state.select(Some(0));
self.offset = false;
}
fn next(&mut self) {
@ -110,6 +112,7 @@ impl MovableComponent for CompletionComponent {
.map(|c| ListItem::new(c.to_string()))
.collect::<Vec<ListItem>>();
if candidates.clone().is_empty() {
self.offset = false;
return Ok(());
}
let candidate_list = List::new(candidates.clone())
@ -126,6 +129,8 @@ impl MovableComponent for CompletionComponent {
(candidates.len().min(5) as u16 + 2)
.min(f.size().bottom().saturating_sub(area.y + y + 2)),
);
self.offset = true;
f.render_widget(Clear, area);
f.render_stateful_widget(candidate_list, area, &mut self.state);
}
@ -137,10 +142,10 @@ impl Component for CompletionComponent {
fn commands(&self, _out: &mut Vec<CommandInfo>) {}
fn event(&mut self, key: Key) -> Result<EventState> {
if key == self.key_config.move_down {
if key == self.key_config.move_down && self.offset {
self.next();
return Ok(EventState::Consumed);
} else if key == self.key_config.move_up {
} else if key == self.key_config.move_up && self.offset {
self.previous();
return Ok(EventState::Consumed);
}

Loading…
Cancel
Save