summaryrefslogtreecommitdiffstats
path: root/src/state.rs
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2021-12-10 02:05:05 -0500
committerJesse Luehrs <doy@tozt.net>2021-12-10 02:05:05 -0500
commit1729d8988a12a097859697f6a9d8041f3a9763fa (patch)
treeac90984ec630c1597119aee4582ba7b60986487a /src/state.rs
parent321549c05e47c322998edba05a52d16a722f17a7 (diff)
downloadnbsh-1729d8988a12a097859697f6a9d8041f3a9763fa.tar.gz
nbsh-1729d8988a12a097859697f6a9d8041f3a9763fa.zip
make up and down work
Diffstat (limited to 'src/state.rs')
-rw-r--r--src/state.rs19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/state.rs b/src/state.rs
index 49e8320..7269970 100644
--- a/src/state.rs
+++ b/src/state.rs
@@ -69,12 +69,12 @@ impl State {
None
}
}
- textmode::Key::Char('j') => {
+ textmode::Key::Char('j') | textmode::Key::Down => {
Some(crate::action::Action::UpdateFocus(Focus::Scrolling(
self.scroll_down(self.focus_idx()),
)))
}
- textmode::Key::Char('k') => {
+ textmode::Key::Char('k') | textmode::Key::Up => {
Some(crate::action::Action::UpdateFocus(Focus::Scrolling(
self.scroll_up(self.focus_idx()),
)))
@@ -108,12 +108,12 @@ impl State {
None
}
}
- textmode::Key::Char('j') => {
+ textmode::Key::Char('j') | textmode::Key::Down => {
Some(crate::action::Action::UpdateFocus(Focus::Scrolling(
self.scroll_down(self.focus_idx()),
)))
}
- textmode::Key::Char('k') => {
+ textmode::Key::Char('k') | textmode::Key::Up => {
Some(crate::action::Action::UpdateFocus(Focus::Scrolling(
self.scroll_up(self.focus_idx()),
)))
@@ -212,7 +212,16 @@ impl State {
self.focus = Focus::History(idx);
self.hide_readline = true;
}
- crate::action::Action::UpdateFocus(new_focus) => {
+ crate::action::Action::UpdateFocus(mut new_focus) => {
+ match new_focus {
+ Focus::Readline | Focus::Scrolling(None) => {}
+ Focus::History(ref mut idx)
+ | Focus::Scrolling(Some(ref mut idx)) => {
+ if *idx >= self.history.entry_count() {
+ *idx = self.history.entry_count() - 1;
+ }
+ }
+ }
self.focus = new_focus;
self.hide_readline = false;
self.scene = self.default_scene(new_focus).await;