diff options
author | 2014-08-27 10:01:24 +0000 | |
---|---|---|
committer | 2014-08-27 10:01:24 +0000 | |
commit | 00042cb453ae72d2f76661c6a712210e2ecd79b4 (patch) | |
tree | b715b3ece6c8180055e50a787b940c59e41088b9 /java/src | |
parent | d8380fdba04d82566c623f1efbcb86aa33d9e401 (diff) | |
parent | c925ca43a6e0b3175feb002ce6b5577ef7d66507 (diff) | |
download | latinime-00042cb453ae72d2f76661c6a712210e2ecd79b4.tar.gz latinime-00042cb453ae72d2f76661c6a712210e2ecd79b4.tar.xz latinime-00042cb453ae72d2f76661c6a712210e2ecd79b4.zip |
am c925ca43: am 97681ebd: Set highlight color along with the commit indicator
* commit 'c925ca43a6e0b3175feb002ce6b5577ef7d66507':
Set highlight color along with the commit indicator
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java index ad72b60b6..4b5edb076 100644 --- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java +++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java @@ -20,7 +20,9 @@ import android.graphics.Color; import android.inputmethodservice.InputMethodService; import android.os.SystemClock; import android.text.SpannableString; +import android.text.Spanned; import android.text.TextUtils; +import android.text.style.BackgroundColorSpan; import android.text.style.SuggestionSpan; import android.util.Log; import android.view.KeyCharacterMap; @@ -620,6 +622,7 @@ public final class InputLogic { final boolean newAutoCorrectionIndicator = suggestedWords.mWillAutoCorrect; if (shouldShowCommitIndicator(suggestedWords, settingsValues)) { // typedWordInfo is never null here. + final int textBackgroundColor = settingsValues.mTextHighlightColorForCommitIndicator; final SuggestedWordInfo typedWordInfo = suggestedWords.getTypedWordInfoOrNull(); handler.postShowCommitIndicatorTask(new Runnable() { @Override @@ -641,6 +644,10 @@ public final class InputLogic { mTextDecorator.reset(); return; } + // TODO: As with the above TODO comment, this operation must be performed only + // on the UI thread too. Needs to be refactored. + setComposingTextInternalWithBackgroundColor(typedWordInfo.mWord, + 1 /* newCursorPosition */, textBackgroundColor); mTextDecorator.showCommitIndicator(typedWordInfo); } }); @@ -2199,8 +2206,38 @@ public final class InputLogic { */ private void setComposingTextInternal(final CharSequence newComposingText, final int newCursorPosition) { - mConnection.setComposingText(newComposingText, newCursorPosition); - mTextDecorator.hideIndicatorIfNecessary(newComposingText); + setComposingTextInternalWithBackgroundColor(newComposingText, newCursorPosition, + Color.TRANSPARENT); + } + + /** + * Equivalent to {@link #setComposingTextInternal(CharSequence, int)} except that this method + * allows to set {@link BackgroundColorSpan} to the composing text with the given color. + * + * <p>TODO: Currently the background color is exclusive with the black underline, which is + * automatically added by the framework. We need to change the framework if we need to have both + * of them at the same time.</p> + * <p>TODO: Should we move this method to {@link RichInputConnection}?</p> + * + * @param newComposingText the composing text to be set + * @param newCursorPosition the new cursor position + * @param backgroundColor the background color to be set to the composing text. Set + * {@link Color#TRANSPARENT} to disable the background color. + */ + private void setComposingTextInternalWithBackgroundColor(final CharSequence newComposingText, + final int newCursorPosition, final int backgroundColor) { + final CharSequence composingTextToBeSet; + if (backgroundColor == Color.TRANSPARENT) { + composingTextToBeSet = newComposingText; + } else { + final SpannableString spannable = new SpannableString(newComposingText); + final BackgroundColorSpan backgroundColorSpan = + new BackgroundColorSpan(backgroundColor); + spannable.setSpan(backgroundColorSpan, 0, spannable.length(), + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE | Spanned.SPAN_COMPOSING); + composingTextToBeSet = spannable; + } + mConnection.setComposingText(composingTextToBeSet, newCursorPosition); } ////////////////////////////////////////////////////////////////////////////////////////////// |