move cursor to end when completion accepted
This commit is contained in:
parent
dd2b6ce00e
commit
dc577c03c9
@ -4,10 +4,12 @@ use crate::misc::{dyn_mut_iter, option_vec_printer, JsonFileOutput, SerdeValueHe
|
|||||||
use crate::parsing::{process_func_str, test_func};
|
use crate::parsing::{process_func_str, test_func};
|
||||||
use crate::suggestions::generate_hint;
|
use crate::suggestions::generate_hint;
|
||||||
use eframe::{egui, epi};
|
use eframe::{egui, epi};
|
||||||
|
use egui::epaint::text::cursor::{PCursor, RCursor};
|
||||||
use egui::plot::Plot;
|
use egui::plot::Plot;
|
||||||
use egui::{
|
use egui::{
|
||||||
Button, CentralPanel, Color32, ComboBox, Context, FontData, FontDefinitions, FontFamily, Key,
|
text::CCursor, text_edit::CursorRange, Button, CentralPanel, Color32, ComboBox, Context,
|
||||||
RichText, SidePanel, Slider, TextEdit, TopBottomPanel, Vec2, Visuals, Widget, Window,
|
FontData, FontDefinitions, FontFamily, Key, RichText, SidePanel, Slider, TextEdit,
|
||||||
|
TopBottomPanel, Vec2, Visuals, Widget, Window,
|
||||||
};
|
};
|
||||||
use epi::Frame;
|
use epi::Frame;
|
||||||
use instant::Duration;
|
use instant::Duration;
|
||||||
@ -503,9 +505,12 @@ impl MathApp {
|
|||||||
// Contains the function string in a text box that the user can edit
|
// Contains the function string in a text box that the user can edit
|
||||||
let hint = generate_hint(&self.func_strs[i]).unwrap_or_default();
|
let hint = generate_hint(&self.func_strs[i]).unwrap_or_default();
|
||||||
|
|
||||||
|
let te_id = ui.make_persistent_id("text_edit_ac".to_string());
|
||||||
|
|
||||||
let func_edit_focus = TextEdit::singleline(&mut self.func_strs[i])
|
let func_edit_focus = TextEdit::singleline(&mut self.func_strs[i])
|
||||||
.hint_text(&hint)
|
.hint_text(&hint)
|
||||||
.hint_forward(true)
|
.hint_forward(true)
|
||||||
|
.id(te_id)
|
||||||
.ui(ui)
|
.ui(ui)
|
||||||
.has_focus();
|
.has_focus();
|
||||||
|
|
||||||
@ -515,6 +520,22 @@ impl MathApp {
|
|||||||
self.text_boxes_focused = true;
|
self.text_boxes_focused = true;
|
||||||
if ui.input().key_down(Key::ArrowRight) {
|
if ui.input().key_down(Key::ArrowRight) {
|
||||||
self.func_strs[i] += &hint;
|
self.func_strs[i] += &hint;
|
||||||
|
let mut state = TextEdit::load_state(ui.ctx(), te_id).unwrap();
|
||||||
|
state.set_cursor_range(Some(CursorRange::one(
|
||||||
|
egui::epaint::text::cursor::Cursor {
|
||||||
|
ccursor: CCursor {
|
||||||
|
index: 0,
|
||||||
|
prefer_next_row: false,
|
||||||
|
},
|
||||||
|
rcursor: RCursor { row: 0, column: 0 },
|
||||||
|
pcursor: PCursor {
|
||||||
|
paragraph: 0,
|
||||||
|
offset: 10000,
|
||||||
|
prefer_next_row: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)));
|
||||||
|
TextEdit::store_state(ui.ctx(), te_id, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user