fix clipboard suggestion being shown for a split second when starting gesture typing

This commit is contained in:
Helium314 2024-07-10 16:32:18 +02:00
parent 105d044aa8
commit a3bc3b56ff
3 changed files with 18 additions and 6 deletions

View file

@ -1630,6 +1630,10 @@ public class LatinIME extends InputMethodService implements
@Override
public void showSuggestionStrip(final SuggestedWords suggestedWords) {
if (suggestedWords.isEmpty()) {
// avoids showing clipboard suggestion when starting gesture typing
// should be fine, as there will be another suggestion in a few ms
// (but not a great style to avoid this visual glitch, maybe revert this commit and replace with sth better)
if (suggestedWords.mInputStyle != SuggestedWords.INPUT_STYLE_UPDATE_BATCH)
setNeutralSuggestionStrip();
} else {
setSuggestedWords(suggestedWords);

View file

@ -39,9 +39,13 @@ public class SuggestedWords {
private static final ArrayList<SuggestedWordInfo> EMPTY_WORD_INFO_LIST = new ArrayList<>(0);
@NonNull
private static final SuggestedWords EMPTY = new SuggestedWords(
EMPTY_WORD_INFO_LIST, null /* rawSuggestions */, null /* typedWord */,
false /* typedWordValid */, false /* willAutoCorrect */,
false /* isObsoleteSuggestions */, INPUT_STYLE_NONE, NOT_A_SEQUENCE_NUMBER);
EMPTY_WORD_INFO_LIST, null, null, false,
false, false, INPUT_STYLE_NONE, NOT_A_SEQUENCE_NUMBER);
@NonNull
private static final SuggestedWords EMPTY_BATCH = new SuggestedWords(
EMPTY_WORD_INFO_LIST, null, null, false,
false, false, INPUT_STYLE_UPDATE_BATCH, NOT_A_SEQUENCE_NUMBER);
@Nullable
public final SuggestedWordInfo mTypedWordInfo;
@ -195,6 +199,11 @@ public class SuggestedWords {
return SuggestedWords.EMPTY;
}
@NonNull
public static SuggestedWords getEmptyBatchInstance() {
return SuggestedWords.EMPTY_BATCH;
}
// Should get rid of the first one (what the user typed previously) from suggestions
// and replace it with what the user currently typed.
public static ArrayList<SuggestedWordInfo> getTypedWordAndPreviousSuggestions(

View file

@ -511,8 +511,7 @@ public final class InputLogic {
final KeyboardSwitcher keyboardSwitcher, final LatinIME.UIHandler handler) {
mWordBeingCorrectedByCursor = null;
mInputLogicHandler.onStartBatchInput();
handler.showGesturePreviewAndSuggestionStrip(
SuggestedWords.getEmptyInstance(), false /* dismissGestureFloatingPreviewText */);
handler.showGesturePreviewAndSuggestionStrip(SuggestedWords.getEmptyBatchInstance(), false);
handler.cancelUpdateSuggestionStrip();
++mAutoCommitSequenceNumber;
mConnection.beginBatchEdit();