diff options
| author | Yohei Yukawa <yukawa@google.com> | 2014-07-02 07:35:32 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-01 21:47:40 +0000 |
| commit | 8b4c1e953f0ed25d6da8219b17657bb980356830 (patch) | |
| tree | a8ef5774d438dd9eab23a5be4256709f6060f176 /core/java/android | |
| parent | c6011deffc80eaee6dfb1c7975e050bc71e5ea96 (diff) | |
| parent | b5268dcc17cd9ecb540b06ad59bd74188b57a069 (diff) | |
Merge "Require coordinate transformation matrix if necessary"
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/view/inputmethod/CursorAnchorInfo.java | 20 | ||||
| -rw-r--r-- | core/java/android/view/inputmethod/SparseRectFArray.java | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/core/java/android/view/inputmethod/CursorAnchorInfo.java b/core/java/android/view/inputmethod/CursorAnchorInfo.java index d3d5fff2ecf2..a22931a3407e 100644 --- a/core/java/android/view/inputmethod/CursorAnchorInfo.java +++ b/core/java/android/view/inputmethod/CursorAnchorInfo.java @@ -291,15 +291,30 @@ public final class CursorAnchorInfo implements Parcelable { */ public Builder setMatrix(final Matrix matrix) { mMatrix.set(matrix != null ? matrix : Matrix.IDENTITY_MATRIX); + mMatrixInitialized = true; return this; } private final Matrix mMatrix = new Matrix(Matrix.IDENTITY_MATRIX); + private boolean mMatrixInitialized = false; /** - * @return {@link CursorAnchorInfo} using parameters in this - * {@link Builder}. + * @return {@link CursorAnchorInfo} using parameters in this {@link Builder}. + * @throws IllegalArgumentException if one or more positional parameters are specified but + * the coordinate transformation matrix is not provided via {@link #setMatrix(Matrix)}. */ public CursorAnchorInfo build() { + if (!mMatrixInitialized) { + // Coordinate transformation matrix is mandatory when positional parameters are + // specified. + if ((mCharacterRectBuilder != null && !mCharacterRectBuilder.isEmpty()) || + !Float.isNaN(mInsertionMarkerHorizontal) || + !Float.isNaN(mInsertionMarkerTop) || + !Float.isNaN(mInsertionMarkerBaseline) || + !Float.isNaN(mInsertionMarkerBottom)) { + throw new IllegalArgumentException("Coordinate transformation matrix is " + + "required when positional parameters are specified."); + } + } return new CursorAnchorInfo(this); } @@ -317,6 +332,7 @@ public final class CursorAnchorInfo implements Parcelable { mInsertionMarkerBaseline = Float.NaN; mInsertionMarkerBottom = Float.NaN; mMatrix.set(Matrix.IDENTITY_MATRIX); + mMatrixInitialized = false; if (mCharacterRectBuilder != null) { mCharacterRectBuilder.reset(); } diff --git a/core/java/android/view/inputmethod/SparseRectFArray.java b/core/java/android/view/inputmethod/SparseRectFArray.java index 40cade74f864..d4ec9d0253a5 100644 --- a/core/java/android/view/inputmethod/SparseRectFArray.java +++ b/core/java/android/view/inputmethod/SparseRectFArray.java @@ -196,6 +196,10 @@ public final class SparseRectFArray implements Parcelable { private float[] mCoordinates = null; private static int INITIAL_SIZE = 16; + public boolean isEmpty() { + return mCount <= 0; + } + /** * @return {@link SparseRectFArray} using parameters in this {@link SparseRectFArray}. */ |
