Skip to content

Commit 18434c0

Browse files
committed
handle menu navigation inapplicable on single item
1 parent b535ff9 commit 18434c0

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/engine.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,41 +980,59 @@ impl Reedline {
980980
ReedlineEvent::MenuNext => {
981981
self.active_menu()
982982
.map_or(Ok(EventStatus::Inapplicable), |menu| {
983+
if menu.get_values().len() < 2 {
984+
return Ok(EventStatus::Inapplicable);
985+
}
983986
menu.menu_event(MenuEvent::NextElement);
984987
Ok(EventStatus::Handled)
985988
})
986989
}
987990
ReedlineEvent::MenuPrevious => {
988991
self.active_menu()
989992
.map_or(Ok(EventStatus::Inapplicable), |menu| {
993+
if menu.get_values().len() < 2 {
994+
return Ok(EventStatus::Inapplicable);
995+
}
990996
menu.menu_event(MenuEvent::PreviousElement);
991997
Ok(EventStatus::Handled)
992998
})
993999
}
9941000
ReedlineEvent::MenuUp => {
9951001
self.active_menu()
9961002
.map_or(Ok(EventStatus::Inapplicable), |menu| {
1003+
if menu.get_values().len() < 2 {
1004+
return Ok(EventStatus::Inapplicable);
1005+
}
9971006
menu.menu_event(MenuEvent::MoveUp);
9981007
Ok(EventStatus::Handled)
9991008
})
10001009
}
10011010
ReedlineEvent::MenuDown => {
10021011
self.active_menu()
10031012
.map_or(Ok(EventStatus::Inapplicable), |menu| {
1013+
if menu.get_values().len() < 2 {
1014+
return Ok(EventStatus::Inapplicable);
1015+
}
10041016
menu.menu_event(MenuEvent::MoveDown);
10051017
Ok(EventStatus::Handled)
10061018
})
10071019
}
10081020
ReedlineEvent::MenuLeft => {
10091021
self.active_menu()
10101022
.map_or(Ok(EventStatus::Inapplicable), |menu| {
1023+
if menu.get_values().len() < 2 {
1024+
return Ok(EventStatus::Inapplicable);
1025+
}
10111026
menu.menu_event(MenuEvent::MoveLeft);
10121027
Ok(EventStatus::Handled)
10131028
})
10141029
}
10151030
ReedlineEvent::MenuRight => {
10161031
self.active_menu()
10171032
.map_or(Ok(EventStatus::Inapplicable), |menu| {
1033+
if menu.get_values().len() < 2 {
1034+
return Ok(EventStatus::Inapplicable);
1035+
}
10181036
menu.menu_event(MenuEvent::MoveRight);
10191037
Ok(EventStatus::Handled)
10201038
})

0 commit comments

Comments
 (0)