moved backspace functions

type-render
korin 3 years ago
parent b02c1deb79
commit a27ec9d267
  1. 35
      src/input.rs
  2. 47
      src/main.rs

@ -53,22 +53,47 @@ pub struct ModifierKeys {
impl ModifierKeys {
pub fn new() -> ModifierKeys {
ModifierKeys { alt: false, ctrl: false, shift: false }
ModifierKeys {
alt: false,
ctrl: false,
shift: false,
}
}
}
pub fn backspace(buffer: &mut String, cursor_position: &mut usize, modifiers: &ModifierKeys) {
if modifiers.ctrl {
// Word backspace
// TODO: Clean up this messy expression
let buffer_chars: Vec<char> = buffer.chars().collect();
while !(buffer_chars[*cursor_position - 1] == ' '
|| buffer_chars[*cursor_position - 1] == '\n')
&& *cursor_position > 1
{
*cursor_position -= 1;
buffer.remove(*cursor_position);
}
// i shouldn't have to do this
*cursor_position -= 1;
buffer.remove(*cursor_position);
} else {
// Character backspace
buffer.remove(*cursor_position - 1);
*cursor_position -= 1;
}
}
pub fn delete(buffer: &mut String, cursor_position: usize, modifiers: &ModifierKeys) {
if modifiers.ctrl {
loop {
let buffer_chars: Vec<char> = buffer.chars()
.collect();
let buffer_chars: Vec<char> = buffer.chars().collect();
if cursor_position == buffer.len() {
break
break;
}
if !buffer_chars[cursor_position].is_whitespace() {
buffer.remove(cursor_position);
} else {
break
break;
}
}
} else {

@ -102,6 +102,17 @@ pub fn main() -> Result<(), String> {
}
}
// BACKSPACE key
Some(Keycode::Backspace) => {
if buffer.len() > 0 {
undo_timer = 0;
selection_anchor = None;
input::backspace(&mut buffer, &mut cursor_position, &modifier_keys);
draw!();
}
}
_ => (),
};
@ -158,20 +169,6 @@ pub fn main() -> Result<(), String> {
draw!();
}
// BACKSPACE key
// Character backspace
Some(Keycode::Backspace) => {
if buffer.len() > 0 {
undo_timer = 0;
selection_anchor = None;
buffer.remove(cursor_position - 1);
cursor_position -= 1;
draw!();
}
}
_ => (),
}
}
@ -220,28 +217,6 @@ pub fn main() -> Result<(), String> {
draw!()
}
// BACKSPACE key
// Word backspace
// TODO: Clean up this cursed expression
Some(Keycode::Backspace) => {
if buffer.len() > 0 {
undo_timer = 0;
selection_anchor = None;
let buffer_chars: Vec<char> = buffer.chars().collect();
while !(buffer_chars[cursor_position - 1] == ' '
|| buffer_chars[cursor_position - 1] == '\n')
&& cursor_position > 1
{
buffer.remove(cursor_position - 1);
cursor_position -= 1;
}
buffer.remove(cursor_position - 1);
cursor_position -= 1;
draw!()
}
}
_ => (),
}
}

Loading…
Cancel
Save