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

Commit d97b097a authored by Raph Levien's avatar Raph Levien Committed by Yuling Liang
Browse files

Followon fix for 14276128 Clipping at bottom of TextView

The previous fix did not work when the text was ellipsized, because the
test for whether the line was the last line was incorrect. The new test
handles both the end of the buffer and the case where it is the last
line because of ellipsizing.

So this should be the proper fix for bug 14276128 Clipping at bottom of
TextView when lineSpacingMultiplier < 1

This version of the patch also handles the single-line case (which is
computed in BoringLayout rather than StaticLayout).

Change-Id: I88791acc2aa493cc8c599b374f4d213571260b4b
parent 4f50911a
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -188,10 +188,6 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback
            spacing = metrics.descent - metrics.ascent;
        }

        if (spacingmult != 1 || spacingadd != 0) {
            spacing = (int)(spacing * spacingmult + spacingadd + 0.5f);
        }

        mBottom = spacing;

        if (includepad) {
+10 −6
Original line number Diff line number Diff line
@@ -633,7 +633,11 @@ public class StaticLayout extends Layout {
            bottom = fm.bottom;
        }

        if (j == 0) {
        boolean firstLine = (j == 0);
        boolean currentLineIsTheLastVisibleOne = (j + 1 == mMaximumVisibleLineCount);
        boolean lastLine = currentLineIsTheLastVisibleOne || (end == bufEnd);

        if (firstLine) {
            if (trackPad) {
                mTopPadding = top - above;
            }
@@ -642,7 +646,10 @@ public class StaticLayout extends Layout {
                above = top;
            }
        }
        if (end == bufEnd) {

        int extra;

        if (lastLine) {
            if (trackPad) {
                mBottomPadding = bottom - below;
            }
@@ -652,9 +659,8 @@ public class StaticLayout extends Layout {
            }
        }

        int extra;

        if (needMultiply && end != bufEnd) {
        if (needMultiply && !lastLine) {
            double ex = (below - above) * (spacingmult - 1) + spacingadd;
            if (ex >= 0) {
                extra = (int)(ex + EXTRA_ROUNDING);
@@ -691,8 +697,6 @@ public class StaticLayout extends Layout {
        if (ellipsize != null) {
            // If there is only one line, then do any type of ellipsis except when it is MARQUEE
            // if there are multiple lines, just allow END ellipsis on the last line
            boolean firstLine = (j == 0);
            boolean currentLineIsTheLastVisibleOne = (j + 1 == mMaximumVisibleLineCount);
            boolean forceEllipsis = moreChars && (mLineCount + 1 == mMaximumVisibleLineCount);

            boolean doEllipsis =