From 396879f3f88e6384588c421c7e57ceef932aad59 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Mon, 17 Nov 2014 12:32:06 -0800 Subject: [PATCH] Fix missing ellipsis when just one character is truncated The "moreChars" test in StaticLayout's generate method would evaluate to false when the last character in a word caused the break. This in turn suppressed the ellipsis in this case. The proposed fix is always to set moreChars true in the code path where the line is broken because more text wouldn't fit. Bug: 17738112 Change-Id: Ifa1a69841ca952da4d1937dc8326778179b026b3 --- core/java/android/text/StaticLayout.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index e82057ce81e73..02297e3c3356c 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -383,7 +383,6 @@ public class StaticLayout extends Layout { okBottom = fitBottom; } } else { - final boolean moreChars; int endPos; int above, below, top, bottom; float currentTextWidth; @@ -395,7 +394,6 @@ public class StaticLayout extends Layout { top = okTop; bottom = okBottom; currentTextWidth = okWidth; - moreChars = (j + 1 < spanEnd); } else if (fit != here) { endPos = fit; above = fitAscent; @@ -403,7 +401,6 @@ public class StaticLayout extends Layout { top = fitTop; bottom = fitBottom; currentTextWidth = fitWidth; - moreChars = (j + 1 < spanEnd); } else { // must make progress, so take next character endPos = here + 1; @@ -417,7 +414,6 @@ public class StaticLayout extends Layout { top = fmTop; bottom = fmBottom; currentTextWidth = widths[here - paraStart]; - moreChars = (endPos < spanEnd); } v = out(source, here, endPos, @@ -425,7 +421,7 @@ public class StaticLayout extends Layout { v, spacingmult, spacingadd, chooseHt,chooseHtv, fm, hasTabOrEmoji, needMultiply, chdirs, dir, easy, bufEnd, includepad, trackpad, chs, widths, paraStart, ellipsize, ellipsizedWidth, - currentTextWidth, paint, moreChars); + currentTextWidth, paint, true); here = endPos; j = here - 1; // restart j-span loop from here, compensating for the j++