summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2012-03-06 13:57:16 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-06 13:57:16 -0800
commit957c800ac0cb8e375dc3d4c38011456d5c429f95 (patch)
treeaf2c849747cc7dda2b6277ca3700e848daeeb288 /core/java
parentdbaf2cc1bfd96c16cb9b6cb0291b7a8814b3c66f (diff)
parentc70e7a0b8add16d2e6cec4d58c3cc74d08cc20b4 (diff)
downloadframeworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.zip
frameworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.tar.gz
frameworks_base-957c800ac0cb8e375dc3d4c38011456d5c429f95.tar.bz2
Merge "Ellipsize avoids spaces and starts right after text"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/text/MeasuredText.java26
-rw-r--r--core/java/android/text/TextUtils.java8
2 files changed, 19 insertions, 15 deletions
diff --git a/core/java/android/text/MeasuredText.java b/core/java/android/text/MeasuredText.java
index a52e2ba..715d1f2 100644
--- a/core/java/android/text/MeasuredText.java
+++ b/core/java/android/text/MeasuredText.java
@@ -222,23 +222,27 @@ class MeasuredText {
return wid;
}
- int breakText(int start, int limit, boolean forwards, float width) {
+ int breakText(int limit, boolean forwards, float width) {
float[] w = mWidths;
if (forwards) {
- for (int i = start; i < limit; ++i) {
- if ((width -= w[i]) < 0) {
- return i - start;
- }
+ int i = 0;
+ while (i < limit) {
+ width -= w[i];
+ if (width < 0.0f) break;
+ i++;
}
+ while (i > 0 && mChars[i - 1] == ' ') i--;
+ return i;
} else {
- for (int i = limit; --i >= start;) {
- if ((width -= w[i]) < 0) {
- return limit - i -1;
- }
+ int i = limit - 1;
+ while (i >= 0) {
+ width -= w[i];
+ if (width < 0.0f) break;
+ i--;
}
+ while (i < limit - 1 && mChars[i + 1] == ' ') i++;
+ return limit - i - 1;
}
-
- return limit - start;
}
float measure(int start, int limit) {
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java
index afae5bb2..270624c 100644
--- a/core/java/android/text/TextUtils.java
+++ b/core/java/android/text/TextUtils.java
@@ -1091,13 +1091,13 @@ public class TextUtils {
if (avail < 0) {
// it all goes
} else if (where == TruncateAt.START) {
- right = len - mt.breakText(0, len, false, avail);
+ right = len - mt.breakText(len, false, avail);
} else if (where == TruncateAt.END || where == TruncateAt.END_SMALL) {
- left = mt.breakText(0, len, true, avail);
+ left = mt.breakText(len, true, avail);
} else {
- right = len - mt.breakText(0, len, false, avail / 2);
+ right = len - mt.breakText(len, false, avail / 2);
avail -= mt.measure(right, len);
- left = mt.breakText(0, right, true, avail);
+ left = mt.breakText(right, true, avail);
}
if (callback != null) {