Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1caa0b71 authored by Yohei Yukawa's avatar Yohei Yukawa Committed by Android (Google) Code Review
Browse files

Merge "Follow up API signature changes of CursorAnchorInfo" into lmp-dev

parents cb077f75 a8ecd296
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -34,10 +34,15 @@ public final class CursorAnchorInfoCompatWrapper {
     */
    public static final int FLAG_HAS_INVISIBLE_REGION = 0x02;

    /**
     * The insertion marker or character bounds is placed at right-to-left (RTL) character.
     */
    public static final int FLAG_IS_RTL = 0x04;

    // Note that CursorAnchorInfo has been introduced in API level XX (Build.VERSION_CODE.LXX).
    private static final CompatUtils.ClassWrapper sCursorAnchorInfoClass;
    private static final CompatUtils.ToObjectMethodWrapper<RectF> sGetCharacterRectMethod;
    private static final CompatUtils.ToIntMethodWrapper sGetCharacterRectFlagsMethod;
    private static final CompatUtils.ToObjectMethodWrapper<RectF> sGetCharacterBoundsMethod;
    private static final CompatUtils.ToIntMethodWrapper sGetCharacterBoundsFlagsMethod;
    private static final CompatUtils.ToObjectMethodWrapper<CharSequence> sGetComposingTextMethod;
    private static final CompatUtils.ToIntMethodWrapper sGetComposingTextStartMethod;
    private static final CompatUtils.ToFloatMethodWrapper sGetInsertionMarkerBaselineMethod;
@@ -51,10 +56,10 @@ public final class CursorAnchorInfoCompatWrapper {
    static {
        sCursorAnchorInfoClass = CompatUtils.getClassWrapper(
                "android.view.inputmethod.CursorAnchorInfo");
        sGetCharacterRectMethod = sCursorAnchorInfoClass.getMethod(
                "getCharacterRect", (RectF)null, int.class);
        sGetCharacterRectFlagsMethod = sCursorAnchorInfoClass.getPrimitiveMethod(
                "getCharacterRectFlags", 0, int.class);
        sGetCharacterBoundsMethod = sCursorAnchorInfoClass.getMethod(
                "getCharacterBounds", (RectF)null, int.class);
        sGetCharacterBoundsFlagsMethod = sCursorAnchorInfoClass.getPrimitiveMethod(
                "getCharacterBoundsFlags", 0, int.class);
        sGetComposingTextMethod = sCursorAnchorInfoClass.getMethod(
                "getComposingText", (CharSequence)null);
        sGetComposingTextStartMethod = sCursorAnchorInfoClass.getPrimitiveMethod(
@@ -112,12 +117,12 @@ public final class CursorAnchorInfoCompatWrapper {
        return sGetMatrixMethod.invoke(mInstance);
    }

    public RectF getCharacterRect(final int index) {
        return sGetCharacterRectMethod.invoke(mInstance, index);
    public RectF getCharacterBounds(final int index) {
        return sGetCharacterBoundsMethod.invoke(mInstance, index);
    }

    public int getCharacterRectFlags(final int index) {
        return sGetCharacterRectFlagsMethod.invoke(mInstance, index);
    public int getCharacterBoundsFlags(final int index) {
        return sGetCharacterBoundsFlagsMethod.invoke(mInstance, index);
    }

    public float getInsertionMarkerBaseline() {
+3 −3
Original line number Diff line number Diff line
@@ -274,8 +274,8 @@ public class TextDecorator {
            }
            final int composingTextStart = info.getComposingTextStart();
            final int lastCharRectIndex = composingTextStart + composingText.length() - 1;
            final RectF lastCharRect = info.getCharacterRect(lastCharRectIndex);
            final int lastCharRectFlag = info.getCharacterRectFlags(lastCharRectIndex);
            final RectF lastCharRect = info.getCharacterBounds(lastCharRectIndex);
            final int lastCharRectFlag = info.getCharacterBoundsFlags(lastCharRectIndex);
            final boolean hasInvisibleRegionInLastCharRect =
                    (lastCharRectFlag & CursorAnchorInfoCompatWrapper.FLAG_HAS_INVISIBLE_REGION)
                            != 0;
@@ -285,7 +285,7 @@ public class TextDecorator {
            }
            final RectF segmentStartCharRect = new RectF(lastCharRect);
            for (int i = composingText.length() - 2; i >= 0; --i) {
                final RectF charRect = info.getCharacterRect(composingTextStart + i);
                final RectF charRect = info.getCharacterBounds(composingTextStart + i);
                if (charRect == null) {
                    break;
                }