Skip to content

Commit ee907e7

Browse files
committed
handle menu navigation inapplicable on single item
1 parent 53b6a78 commit ee907e7

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
@@ -892,41 +892,59 @@ impl Reedline {
892892
ReedlineEvent::MenuNext => {
893893
self.active_menu()
894894
.map_or(Ok(EventStatus::Inapplicable), |menu| {
895+
if menu.get_values().len() < 2 {
896+
return Ok(EventStatus::Inapplicable);
897+
}
895898
menu.menu_event(MenuEvent::NextElement);
896899
Ok(EventStatus::Handled)
897900
})
898901
}
899902
ReedlineEvent::MenuPrevious => {
900903
self.active_menu()
901904
.map_or(Ok(EventStatus::Inapplicable), |menu| {
905+
if menu.get_values().len() < 2 {
906+
return Ok(EventStatus::Inapplicable);
907+
}
902908
menu.menu_event(MenuEvent::PreviousElement);
903909
Ok(EventStatus::Handled)
904910
})
905911
}
906912
ReedlineEvent::MenuUp => {
907913
self.active_menu()
908914
.map_or(Ok(EventStatus::Inapplicable), |menu| {
915+
if menu.get_values().len() < 2 {
916+
return Ok(EventStatus::Inapplicable);
917+
}
909918
menu.menu_event(MenuEvent::MoveUp);
910919
Ok(EventStatus::Handled)
911920
})
912921
}
913922
ReedlineEvent::MenuDown => {
914923
self.active_menu()
915924
.map_or(Ok(EventStatus::Inapplicable), |menu| {
925+
if menu.get_values().len() < 2 {
926+
return Ok(EventStatus::Inapplicable);
927+
}
916928
menu.menu_event(MenuEvent::MoveDown);
917929
Ok(EventStatus::Handled)
918930
})
919931
}
920932
ReedlineEvent::MenuLeft => {
921933
self.active_menu()
922934
.map_or(Ok(EventStatus::Inapplicable), |menu| {
935+
if menu.get_values().len() < 2 {
936+
return Ok(EventStatus::Inapplicable);
937+
}
923938
menu.menu_event(MenuEvent::MoveLeft);
924939
Ok(EventStatus::Handled)
925940
})
926941
}
927942
ReedlineEvent::MenuRight => {
928943
self.active_menu()
929944
.map_or(Ok(EventStatus::Inapplicable), |menu| {
945+
if menu.get_values().len() < 2 {
946+
return Ok(EventStatus::Inapplicable);
947+
}
930948
menu.menu_event(MenuEvent::MoveRight);
931949
Ok(EventStatus::Handled)
932950
})

0 commit comments

Comments
 (0)