get suggestions when typing with cursor in front of composing word, fixes #265

This commit is contained in:
Helium314 2023-11-20 15:27:58 +01:00
parent 43a914f270
commit d3d1f25c7f
2 changed files with 11 additions and 3 deletions

View file

@ -228,6 +228,10 @@ public final class WordComposer {
return mCursorPositionWithinWord != mCodePointSize;
}
public boolean isCursorInFrontOfComposingWord() {
return mCursorPositionWithinWord == 0;
}
/**
* When the cursor is moved by the user, we need to update its position.
* If it falls inside the currently composing word, we don't reset the composition, and

View file

@ -931,13 +931,17 @@ public final class InputLogic {
insertAutomaticSpaceIfOptionsAndTextAllow(settingsValues);
}
if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
if (mWordComposer.isCursorInFrontOfComposingWord()) {
// we add something in front of the composing word, this is likely for adding something
// and not for a correction
// keep composing and don't unlearn word in this case
resetEntireInputState(mConnection.getExpectedSelectionStart(), mConnection.getExpectedSelectionEnd(), false);
} else if (mWordComposer.isCursorFrontOrMiddleOfComposingWord()) {
// If we are in the middle of a recorrection, we need to commit the recorrection
// first so that we can insert the character at the current cursor position.
// We also need to unlearn the original word that is now being corrected.
unlearnWord(mWordComposer.getTypedWord(), inputTransaction.getMSettingsValues(), Constants.EVENT_BACKSPACE);
resetEntireInputState(mConnection.getExpectedSelectionStart(),
mConnection.getExpectedSelectionEnd(), true /* clearSuggestionStrip */);
resetEntireInputState(mConnection.getExpectedSelectionStart(), mConnection.getExpectedSelectionEnd(), true);
isComposingWord = false;
}
// We want to find out whether to start composing a new word with this character. If so,