From b85e3fa9a6040151d94011e92634033ba7ad64be Mon Sep 17 00:00:00 2001 From: John Doty Date: Sun, 30 Apr 2023 07:33:06 -0700 Subject: [PATCH] Fix crash on changing selection with no ports No ports always means no selection --- src/client/ui.rs | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/client/ui.rs b/src/client/ui.rs index 648880a..efb0ca3 100644 --- a/src/client/ui.rs +++ b/src/client/ui.rs @@ -471,25 +471,37 @@ impl UI { Some(i) => { assert!(self.ports.len() > 0, "We must have ports because we have a selection."); if i == 0 { - self.ports.len() - 1 + Some(self.ports.len() - 1) } else { - i - 1 + Some(i - 1) + } + } + None => { + if self.ports.len() > 0 { + Some(0) + } else { + None } } - None => 0, }; - self.selection.select(Some(index)); + self.selection.select(index); } KeyEvent { code: KeyCode::Down, .. } | KeyEvent { code: KeyCode::Char('j'), .. } => { let index = match self.selection.selected() { Some(i) => { assert!(self.ports.len() > 0, "We must have ports because we have a selection."); - (i + 1) % self.ports.len() + Some((i + 1) % self.ports.len()) + } + None => { + if self.ports.len() > 0 { + Some(0) + } else { + None + } } - None => 0, }; - self.selection.select(Some(index)); + self.selection.select(index); } KeyEvent { code: KeyCode::Enter, .. } => { if let Some(p) = self.get_selected_port() {