simplify hint logic
This commit is contained in:
parent
a7be3475d4
commit
927ca265e6
@ -48,27 +48,22 @@ impl<'a> AutoComplete<'a> {
|
|||||||
|
|
||||||
match self.hint {
|
match self.hint {
|
||||||
Hint::Many(hints) => {
|
Hint::Many(hints) => {
|
||||||
if movement == &Movement::Complete {
|
|
||||||
self.apply_hint(hints[self.i]);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// maximum index value
|
|
||||||
let max_i = hints.len() - 1;
|
|
||||||
|
|
||||||
match movement {
|
match movement {
|
||||||
Movement::Up => {
|
Movement::Up => {
|
||||||
// subtract one, if fail, set to max_i value.
|
// subtract one, if fail, set to maximum index value.
|
||||||
self.i = self.i.checked_sub(1).unwrap_or(max_i);
|
self.i = self.i.checked_sub(1).unwrap_or(hints.len() - 1);
|
||||||
}
|
}
|
||||||
Movement::Down => {
|
Movement::Down => {
|
||||||
// add one, if resulting value is above maximum i value, set i to 0
|
// add one, if resulting value is above maximum i value, set i to 0
|
||||||
self.i += 1;
|
self.i += 1;
|
||||||
if self.i > max_i {
|
if self.i > (hints.len() - 1) {
|
||||||
self.i = 0;
|
self.i = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
Movement::Complete => {
|
||||||
|
self.apply_hint(hints[self.i]);
|
||||||
|
}
|
||||||
|
Movement::None => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Hint::Single(hint) => {
|
Hint::Single(hint) => {
|
||||||
@ -92,17 +87,31 @@ impl<'a> AutoComplete<'a> {
|
|||||||
|
|
||||||
let te_id = ui.make_persistent_id(format!("text_edit_ac_{}", func_i));
|
let te_id = ui.make_persistent_id(format!("text_edit_ac_{}", func_i));
|
||||||
|
|
||||||
let mut func_edit = egui::TextEdit::singleline(&mut new_string)
|
let re = egui::TextEdit::singleline(&mut new_string)
|
||||||
.hint_forward(true) // Make the hint appear after the last text in the textbox
|
.hint_forward(true) // Make the hint appear after the last text in the textbox
|
||||||
.lock_focus(true)
|
.lock_focus(true)
|
||||||
.id(te_id);
|
.id(te_id)
|
||||||
|
.hint_text({
|
||||||
|
if let Hint::Single(single_hint) = self.hint {
|
||||||
|
*single_hint
|
||||||
|
} else {
|
||||||
|
""
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.ui(ui);
|
||||||
|
|
||||||
|
self.update_string(&new_string);
|
||||||
|
|
||||||
if self.hint.is_none() {
|
if self.hint.is_none() {
|
||||||
let _ = func_edit.ui(ui);
|
|
||||||
self.update_string(&new_string);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ui.input().key_pressed(Key::ArrowDown) {
|
||||||
|
movement = Movement::Down;
|
||||||
|
} else if ui.input().key_pressed(Key::ArrowUp) {
|
||||||
|
movement = Movement::Up;
|
||||||
|
}
|
||||||
|
|
||||||
// Put here so these key presses don't interact with other elements
|
// Put here so these key presses don't interact with other elements
|
||||||
let enter_pressed = ui.input_mut().consume_key(Modifiers::NONE, Key::Enter);
|
let enter_pressed = ui.input_mut().consume_key(Modifiers::NONE, Key::Enter);
|
||||||
let tab_pressed = ui.input_mut().consume_key(Modifiers::NONE, Key::Tab);
|
let tab_pressed = ui.input_mut().consume_key(Modifiers::NONE, Key::Tab);
|
||||||
@ -110,19 +119,6 @@ impl<'a> AutoComplete<'a> {
|
|||||||
movement = Movement::Complete;
|
movement = Movement::Complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Hint::Single(single_hint) = self.hint {
|
|
||||||
func_edit = func_edit.hint_text(*single_hint);
|
|
||||||
if ui.input().key_pressed(Key::ArrowDown) {
|
|
||||||
movement = Movement::Down;
|
|
||||||
} else if ui.input().key_pressed(Key::ArrowUp) {
|
|
||||||
movement = Movement::Up;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let re = func_edit.ui(ui);
|
|
||||||
|
|
||||||
self.update_string(&new_string);
|
|
||||||
|
|
||||||
self.register_movement(&movement);
|
self.register_movement(&movement);
|
||||||
|
|
||||||
if movement != Movement::Complete && let Hint::Many(hints) = self.hint {
|
if movement != Movement::Complete && let Hint::Many(hints) = self.hint {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user