Fix focus cycle on dialogs without buttons

This commit is contained in:
Alexandre Bury 2018-07-24 22:37:39 -07:00
parent e63e1e4916
commit c49d18034d

View File

@ -286,7 +286,8 @@ impl Dialog {
match self.content.on_event( match self.content.on_event(
event.relativized((self.padding + self.borders).top_left()), event.relativized((self.padding + self.borders).top_left()),
) { ) {
EventResult::Ignored if !self.buttons.is_empty() => { EventResult::Ignored => {
if !self.buttons.is_empty() {
match event { match event {
Event::Key(Key::Down) Event::Key(Key::Down)
| Event::Key(Key::Tab) | Event::Key(Key::Tab)
@ -297,6 +298,27 @@ impl Dialog {
} }
_ => EventResult::Ignored, _ => EventResult::Ignored,
} }
} else {
match event {
Event::Shift(Key::Tab) => {
if self.content.take_focus(Direction::back()) {
self.focus = DialogFocus::Content;
EventResult::Consumed(None)
} else {
EventResult::Ignored
}
}
Event::Key(Key::Tab) => {
if self.content.take_focus(Direction::front()) {
self.focus = DialogFocus::Content;
EventResult::Consumed(None)
} else {
EventResult::Ignored
}
}
_ => EventResult::Ignored,
}
}
} }
res => res, res => res,
} }