Skip to content

Commit 8d93cc5

Browse files
committed
handle menu navigation inapplicable on single item
1 parent 122d3f2 commit 8d93cc5

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/engine.rs

+18
Original file line numberDiff line numberDiff line change
@@ -891,41 +891,59 @@ impl Reedline {
891891
ReedlineEvent::MenuNext => {
892892
self.active_menu()
893893
.map_or(Ok(EventStatus::Inapplicable), |menu| {
894+
if menu.get_values().len() < 2 {
895+
return Ok(EventStatus::Inapplicable);
896+
}
894897
menu.menu_event(MenuEvent::NextElement);
895898
Ok(EventStatus::Handled)
896899
})
897900
}
898901
ReedlineEvent::MenuPrevious => {
899902
self.active_menu()
900903
.map_or(Ok(EventStatus::Inapplicable), |menu| {
904+
if menu.get_values().len() < 2 {
905+
return Ok(EventStatus::Inapplicable);
906+
}
901907
menu.menu_event(MenuEvent::PreviousElement);
902908
Ok(EventStatus::Handled)
903909
})
904910
}
905911
ReedlineEvent::MenuUp => {
906912
self.active_menu()
907913
.map_or(Ok(EventStatus::Inapplicable), |menu| {
914+
if menu.get_values().len() < 2 {
915+
return Ok(EventStatus::Inapplicable);
916+
}
908917
menu.menu_event(MenuEvent::MoveUp);
909918
Ok(EventStatus::Handled)
910919
})
911920
}
912921
ReedlineEvent::MenuDown => {
913922
self.active_menu()
914923
.map_or(Ok(EventStatus::Inapplicable), |menu| {
924+
if menu.get_values().len() < 2 {
925+
return Ok(EventStatus::Inapplicable);
926+
}
915927
menu.menu_event(MenuEvent::MoveDown);
916928
Ok(EventStatus::Handled)
917929
})
918930
}
919931
ReedlineEvent::MenuLeft => {
920932
self.active_menu()
921933
.map_or(Ok(EventStatus::Inapplicable), |menu| {
934+
if menu.get_values().len() < 2 {
935+
return Ok(EventStatus::Inapplicable);
936+
}
922937
menu.menu_event(MenuEvent::MoveLeft);
923938
Ok(EventStatus::Handled)
924939
})
925940
}
926941
ReedlineEvent::MenuRight => {
927942
self.active_menu()
928943
.map_or(Ok(EventStatus::Inapplicable), |menu| {
944+
if menu.get_values().len() < 2 {
945+
return Ok(EventStatus::Inapplicable);
946+
}
929947
menu.menu_event(MenuEvent::MoveRight);
930948
Ok(EventStatus::Handled)
931949
})

0 commit comments

Comments
 (0)