am a5a98a03: Merge "IOOB is Suggestions" into ics-mr1

* commit 'a5a98a034b4d52c6bbc75e72f74f1a6ea1c61ed5':
  IOOB is Suggestions
This commit is contained in:
Gilles Debunne
2011-12-08 10:01:29 -08:00
committed by Android Git Automerger
3 changed files with 64 additions and 11 deletions

View File

@@ -158,25 +158,46 @@ public class ExtractEditText extends EditText {
}
/**
* Delete the range of text, supposedly valid
* {@inheritDoc}
* @hide
*/
@Override
protected void deleteText_internal(int start, int end) {
// Do not call the super method. This will change the source TextView instead, which
// will update the ExtractTextView.
// Do not call the super method.
// This will change the source TextView instead, which will update the ExtractTextView.
mIME.onExtractedDeleteText(start, end);
}
/**
* Replaces the range of text [start, end[ by replacement text
* {@inheritDoc}
* @hide
*/
@Override
protected void replaceText_internal(int start, int end, CharSequence text) {
// Do not call the super method. This will change the source TextView instead, which
// will update the ExtractTextView.
// Do not call the super method.
// This will change the source TextView instead, which will update the ExtractTextView.
mIME.onExtractedReplaceText(start, end, text);
}
/**
* {@inheritDoc}
* @hide
*/
@Override
protected void setSpan_internal(Object span, int start, int end, int flags) {
// Do not call the super method.
// This will change the source TextView instead, which will update the ExtractTextView.
mIME.onExtractedSetSpan(span, start, end, flags);
}
/**
* {@inheritDoc}
* @hide
*/
@Override
protected void setCursorPosition_internal(int start, int end) {
// Do not call the super method.
// This will change the source TextView instead, which will update the ExtractTextView.
mIME.onExtractedSelectionChanged(start, end);
}
}

View File

@@ -2005,6 +2005,22 @@ public class InputMethodService extends AbstractInputMethodService {
}
}
/**
* @hide
*/
public void onExtractedSetSpan(Object span, int start, int end, int flags) {
InputConnection conn = getCurrentInputConnection();
if (conn != null) {
if (!conn.setSelection(start, end)) return;
CharSequence text = conn.getSelectedText(InputConnection.GET_TEXT_WITH_STYLES);
if (text instanceof Spannable) {
((Spannable) text).setSpan(span, 0, text.length(), flags);
conn.setComposingRegion(start, end);
conn.commitText(text, 1);
}
}
}
/**
* This is called when the user has clicked on the extracted text view,
* when running in fullscreen mode. The default implementation hides

View File

@@ -9829,7 +9829,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
highlightTextDifferences(mSuggestionInfos[i], spanUnionStart, spanUnionEnd);
}
// Add to dictionary item is there a span with the misspelled flag
// Add to dictionary item if there is a span with the misspelled flag
if (misspelledSpan != null) {
final int misspelledStart = spannable.getSpanStart(misspelledSpan);
final int misspelledEnd = spannable.getSpanEnd(misspelledSpan);
@@ -9915,7 +9915,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final int spanStart = editable.getSpanStart(suggestionInfo.suggestionSpan);
final int spanEnd = editable.getSpanEnd(suggestionInfo.suggestionSpan);
if (spanStart < 0 || spanEnd < 0) {
if (spanStart < 0 || spanEnd <= spanStart) {
// Span has been removed
hide();
return;
@@ -9983,14 +9983,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
// way to assign them a valid range after replacement
if (suggestionSpansStarts[i] <= spanStart &&
suggestionSpansEnds[i] >= spanEnd) {
// TODO The ExtractEditText should restore these spans in the original text
editable.setSpan(suggestionSpans[i], suggestionSpansStarts[i],
setSpan_internal(suggestionSpans[i], suggestionSpansStarts[i],
suggestionSpansEnds[i] + lengthDifference, suggestionSpansFlags[i]);
}
}
// Move cursor at the end of the replaced word
Selection.setSelection(editable, spanEnd + lengthDifference);
final int newCursorPosition = spanEnd + lengthDifference;
setCursorPosition_internal(newCursorPosition, newCursorPosition);
}
hide();
@@ -11463,6 +11463,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
((Editable) mText).replace(start, end, text);
}
/**
* Sets a span on the specified range of text
* @hide
*/
protected void setSpan_internal(Object span, int start, int end, int flags) {
((Editable) mText).setSpan(span, start, end, flags);
}
/**
* Moves the cursor to the specified offset position in text
* @hide
*/
protected void setCursorPosition_internal(int start, int end) {
Selection.setSelection(((Editable) mText), start, end);
}
@ViewDebug.ExportedProperty(category = "text")
private CharSequence mText;
private CharSequence mTransformed;