dont store cursor position when it can be reloaded before actually using the position

should fix #935
also make expected selection start / end private (access still via get methods)
This commit is contained in:
Helium314 2024-07-03 22:30:47 +02:00
parent a92d108444
commit e57e2e8de5
2 changed files with 6 additions and 6 deletions

View file

@ -99,12 +99,12 @@ public final class RichInputConnection implements PrivateCommandPerformer {
* It's not really the selection start position: the selection start may not be there yet, and
* in some cases, it may never arrive there.
*/
public int mExpectedSelStart = INVALID_CURSOR_POSITION; // in chars, not code points
private int mExpectedSelStart = INVALID_CURSOR_POSITION; // in chars, not code points
/**
* The expected selection end. Only differs from mExpectedSelStart if a non-empty selection is
* expected. The same caveats as mExpectedSelStart apply.
*/
public int mExpectedSelEnd = INVALID_CURSOR_POSITION; // in chars, not code points
private int mExpectedSelEnd = INVALID_CURSOR_POSITION; // in chars, not code points
/**
* This contains the committed text immediately preceding the cursor and the composing
* text, if any. It is refreshed when the cursor moves by calling upon the TextView.

View file

@ -923,7 +923,7 @@ public final class InputLogic {
final CharSequence text = mConnection.textBeforeCursorUntilLastWhitespaceOrDoubleSlash();
final TextRange range = new TextRange(text, 0, text.length(), text.length(), false);
isComposingWord = true;
restartSuggestions(range, mConnection.mExpectedSelStart);
restartSuggestions(range);
}
// TODO: remove isWordConnector() and use isUsuallyFollowedBySpace() instead.
// See onStartBatchInput() to see how to do it.
@ -1670,7 +1670,6 @@ public final class InputLogic {
mSuggestionStripViewAccessor.setNeutralSuggestionStrip();
return;
}
final int expectedCursorPosition = mConnection.getExpectedSelectionStart();
if (!mConnection.isCursorTouchingWord(settingsValues.mSpacingAndPunctuations, true /* checkTextAfter */)) {
// Show predictions.
mWordComposer.setCapitalizedModeAtStartComposingTime(WordComposer.CAPS_MODE_OFF);
@ -1700,11 +1699,12 @@ public final class InputLogic {
mConnection.finishComposingText();
return;
}
restartSuggestions(range, expectedCursorPosition);
restartSuggestions(range);
}
private void restartSuggestions(final TextRange range, final int expectedCursorPosition) {
private void restartSuggestions(final TextRange range) {
final int numberOfCharsInWordBeforeCursor = range.getNumberOfCharsInWordBeforeCursor();
final int expectedCursorPosition = mConnection.getExpectedSelectionStart();
if (numberOfCharsInWordBeforeCursor > expectedCursorPosition) return;
final ArrayList<SuggestedWordInfo> suggestions = new ArrayList<>();
final String typedWordString = range.mWord.toString();