1
0
Fork 0

pressing left after accepting a word erases the automatically added space, if any

This commit is contained in:
sspanak 2024-11-29 19:29:14 +02:00 committed by Dimo Karaivanov
parent f64588b850
commit d645e7f425

View file

@ -64,6 +64,10 @@ public abstract class HotkeyHandler extends CommandHandler {
return false; return false;
} }
if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT && onTrimTrailingSpace(validateOnly)) {
return true;
}
if (keyCode == settings.getKeyAddWord()) { if (keyCode == settings.getKeyAddWord()) {
return onKeyAddWord(validateOnly); return onKeyAddWord(validateOnly);
} }
@ -177,7 +181,10 @@ public abstract class HotkeyHandler extends CommandHandler {
public boolean onKeyMoveCursor(boolean backward) { public boolean onKeyMoveCursor(boolean backward) {
if (textSelection.isEmpty()) { if (textSelection.isEmpty()) {
return appHacks.onMoveCursor(backward) || textField.moveCursor(backward); return
appHacks.onMoveCursor(backward)
|| (backward && onTrimTrailingSpace(false))
|| textField.moveCursor(backward);
} else { } else {
textSelection.clear(backward); textSelection.clear(backward);
return true; return true;
@ -398,4 +405,27 @@ public abstract class HotkeyHandler extends CommandHandler {
return true; return true;
} }
private boolean onTrimTrailingSpace(boolean validateOnly) {
if (!settings.getAutoSpace() || !suggestionOps.isEmpty()) {
return false;
}
String after = textField.getStringAfterCursor(1);
if (!after.isEmpty() && after.charAt(0) != '\n') {
return false;
}
String before = textField.getStringBeforeCursor(2);
if (before.length() != 2 || !Character.isWhitespace(before.charAt(1)) || Character.isWhitespace(before.charAt(0))) {
return false;
}
if (!validateOnly) {
textField.deleteChars(1);
}
return true;
}
} }