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

Commit e9f05b00 authored by Gilles Debunne's avatar Gilles Debunne Committed by Android (Google) Code Review
Browse files

Merge "Fix in BreakIterator."

parents f60cee57 daa4a95a
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -16,22 +16,18 @@

package android.text;

import android.util.MathUtils;

import java.text.CharacterIterator;

/** {@hide} */
public class CharSequenceIterator implements CharacterIterator {
    private final CharSequence mValue;

    private final int mStart;
    private final int mEnd;
    private final int mLength;
    private int mIndex;

    public CharSequenceIterator(CharSequence value) {
        mValue = value;
        mStart = 0;
        mEnd = value.length();
        mLength = value.length();
        mIndex = 0;
    }

@@ -46,7 +42,7 @@ public class CharSequenceIterator implements CharacterIterator {

    /** {@inheritDoc} */
    public char current() {
        if (mIndex == mEnd) {
        if (mIndex == mLength) {
            return DONE;
        }
        return mValue.charAt(mIndex);
@@ -54,12 +50,12 @@ public class CharSequenceIterator implements CharacterIterator {

    /** {@inheritDoc} */
    public int getBeginIndex() {
        return mStart;
        return 0;
    }

    /** {@inheritDoc} */
    public int getEndIndex() {
        return mEnd;
        return mLength;
    }

    /** {@inheritDoc} */
@@ -69,27 +65,36 @@ public class CharSequenceIterator implements CharacterIterator {

    /** {@inheritDoc} */
    public char first() {
        return setIndex(mStart);
        return setIndex(0);
    }

    /** {@inheritDoc} */
    public char last() {
        return setIndex(mEnd - 1);
        return setIndex(mLength - 1);
    }

    /** {@inheritDoc} */
    public char next() {
        if (mIndex == mLength) {
            return DONE;
        }
        return setIndex(mIndex + 1);
    }

    /** {@inheritDoc} */
    public char previous() {
        if (mIndex == 0) {
            return DONE;
        }
        return setIndex(mIndex - 1);
    }

    /** {@inheritDoc} */
    public char setIndex(int index) {
        mIndex = MathUtils.constrain(index, mStart, mEnd);
        if ((index < 0) || (index > mLength)) {
            throw new IllegalArgumentException("Valid range is [" + 0 + "..." + mLength + "]");
        }
        mIndex = index;
        return current();
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -390,7 +390,7 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme
        }

        private boolean isValidOffset(int offset) {
            return offset >= 0 && offset < mCurrent.length();
            return offset >= 0 && offset <= mCurrent.length();
        }

        private boolean isLetterOrDigit(int offset) {
@@ -404,7 +404,7 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme
        /** {@inheritDoc} */
        public int preceding(int offset) {
            // always round cursor index into valid string index
            offset = MathUtils.constrain(offset, 0, mCurrent.length() - 1);
            offset = MathUtils.constrain(offset, 0, mCurrent.length());

            do {
                offset = mIterator.preceding(offset);
@@ -417,7 +417,7 @@ public class ArrowKeyMovementMethod extends BaseMovementMethod implements Moveme
        /** {@inheritDoc} */
        public int following(int offset) {
            // always round cursor index into valid string index
            offset = MathUtils.constrain(offset, 0, mCurrent.length() - 1);
            offset = MathUtils.constrain(offset, 0, mCurrent.length());

            do {
                offset = mIterator.following(offset);