summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorYohei Yukawa <yukawa@google.com>2014-07-02 07:35:32 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-01 21:47:40 +0000
commit8b4c1e953f0ed25d6da8219b17657bb980356830 (patch)
treea8ef5774d438dd9eab23a5be4256709f6060f176 /core/java/android
parentc6011deffc80eaee6dfb1c7975e050bc71e5ea96 (diff)
parentb5268dcc17cd9ecb540b06ad59bd74188b57a069 (diff)
Merge "Require coordinate transformation matrix if necessary"
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/view/inputmethod/CursorAnchorInfo.java20
-rw-r--r--core/java/android/view/inputmethod/SparseRectFArray.java4
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}.
*/