summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Thiel <sthiel@thoughtworks.com>2019-06-08 04:12:58 +0530
committerSebastian Thiel <sthiel@thoughtworks.com>2019-06-08 05:04:40 +0530
commitf9a9cdf9f827a5e08b1bcc6035f908fdb971c9fd (patch)
tree63ce753de98a285c69e8ae4837c771cc5c17ab9a
parenteae992fbf0b0f0adaf8feffcb0e4903deabc562e (diff)
Pune/India: Don't try to go down as marked items are removed
-rw-r--r--src/interactive/app/eventloop.rs2
-rw-r--r--src/interactive/widgets/help.rs12
-rw-r--r--src/interactive/widgets/mark.rs19
3 files changed, 18 insertions, 15 deletions
diff --git a/src/interactive/app/eventloop.rs b/src/interactive/app/eventloop.rs
index 56a2bd9..92c1dee 100644
--- a/src/interactive/app/eventloop.rs
+++ b/src/interactive/app/eventloop.rs
@@ -112,7 +112,7 @@ impl TerminalApp {
Char('d') => self.mark_entry(true),
Char('u') | Backspace | Left => self.exit_node(),
Char('o') | Char('\n') | Right => self.enter_node(),
- Ctrl('u') => self.change_entry_selection(CursorDirection::PageUp),
+ Ctrl('u') => self.change_entry_selection(CursorDirection::PageUp),
Char('k') | Up => self.change_entry_selection(CursorDirection::Up),
Char('j') | Down => self.change_entry_selection(CursorDirection::Down),
Ctrl('d') => self.change_entry_selection(CursorDirection::PageDown),
diff --git a/src/interactive/widgets/help.rs b/src/interactive/widgets/help.rs
index bfe5563..ef04c51 100644
--- a/src/interactive/widgets/help.rs
+++ b/src/interactive/widgets/help.rs
@@ -103,8 +103,16 @@ impl HelpPane {
{
hotkey("j/<down>", "move down an entry", None);
hotkey("k/<up>", "move up an entry", None);
- hotkey("o/<enter>/<right>", "descent into the selected directory", None);
- hotkey("u/<left>", "ascent one level into the parent directory", None);
+ hotkey(
+ "o/<enter>/<right>",
+ "descent into the selected directory",
+ None,
+ );
+ hotkey(
+ "u/<left>",
+ "ascent one level into the parent directory",
+ None,
+ );
hotkey("<backspace>", "^", None);
hotkey("Ctrl + d", "move down 10 entries at once", None);
hotkey("<Page Down>", "^", None);
diff --git a/src/interactive/widgets/mark.rs b/src/interactive/widgets/mark.rs
index 3156ad3..a25465c 100644
--- a/src/interactive/widgets/mark.rs
+++ b/src/interactive/widgets/mark.rs
@@ -95,22 +95,17 @@ impl MarkPane {
fn remove_selected_and_move_down(&mut self) {
if let Some(selected) = self.selected {
- let idx = {
- self.marked
- .iter()
- .sorted_by_key(|(_, v)| &v.index)
- .skip(selected)
- .map(|(k, _)| k)
- .next()
- .cloned()
- };
- if let Some(idx) = idx {
+ let sorted_entries: Vec<_> = self
+ .marked
+ .iter()
+ .sorted_by_key(|(_, v)| &v.index)
+ .collect();
+ if let Some(idx) = sorted_entries.get(selected).map(|(k, _)| *k.to_owned()) {
self.marked.remove(&idx);
- self.change_selection(CursorDirection::Down);
}
}
}
-
+
fn change_selection(&mut self, direction: CursorDirection) {
self.selected = self.selected.map(|selected| {
direction