fixes (including for keybindings)

This commit is contained in:
Simon Gardling 2022-03-29 11:36:37 -04:00
parent 734989f1a4
commit c653c5a1c0
3 changed files with 16 additions and 11 deletions

View File

@ -268,6 +268,8 @@ pub struct AppSettings {
/// Stores current plot pixel width
pub plot_width: usize,
pub text_boxes_focused: bool,
}
impl Default for AppSettings {
@ -287,6 +289,7 @@ impl Default for AppSettings {
do_extrema: true,
do_roots: true,
plot_width: 0,
text_boxes_focused: false,
}
}
}
@ -446,6 +449,7 @@ impl MathApp {
let functions_len = self.functions.len();
let mut remove_i: Option<usize> = None;
self.settings.text_boxes_focused = false;
for (i, function) in self.functions.iter_mut().enumerate() {
let mut integral_enabled = function.integral;
let mut derivative_enabled = function.derivative;
@ -495,9 +499,12 @@ impl MathApp {
// If in focus and right arrow key was pressed, apply hint
// TODO: change position of cursor
if func_edit_focus && ui.input().key_down(Key::ArrowRight) {
if func_edit_focus {
self.settings.text_boxes_focused = true;
if ui.input().key_down(Key::ArrowRight) {
self.func_strs[i] += &hint;
}
}
});
let proc_func_str = process_func_str(&self.func_strs[i]);
@ -554,10 +561,11 @@ impl epi::App for MathApp {
false => Visuals::light(),
});
// Toggle show_side_panel on `H` key press
if !self.settings.text_boxes_focused {
self.settings
.show_side_panel
.bitxor_assign(ctx.input().key_down(Key::H));
}
// Initialize fonts
ctx.set_fonts(ASSETS.fonts.clone());

View File

@ -408,6 +408,7 @@ mod tests {
do_extrema: false,
do_roots: false,
plot_width: pixel_width,
text_boxes_focused: false,
}
}

View File

@ -106,7 +106,6 @@ fn gen_completion_hashmap(input: Vec<String>) -> HashMap<String, String> {
}
if let Some(common_substr_unwrapped) = common_substr {
println!("{}", common_substr_unwrapped);
output.insert(key.clone(), common_substr_unwrapped.replace(&key, ""));
}
}
@ -212,10 +211,7 @@ mod tests {
vec![("sin", None), ("cos", None), ("tan", None)];
for (key, value) in manual_values {
values.insert(
key.to_string(),
value.map(|x| x.to_string()),
);
values.insert(key.to_string(), value.map(|x| x.to_string()));
}
for (key, value) in values {