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

Commit a19cd51d authored by Siyamed Sinir's avatar Siyamed Sinir Committed by Roozbeh Pournader
Browse files

Reset StaticLayout.mEllipsized during generate()

StaticLayout.mEllipsized and mMaxLineHeight was set for proper
calculation of static ellipsized text height. However, since
DynamicLayout uses a static instance of StaticLayout, and nobody reset
the mEllipsized, this caused configuration discrepancies for different
DynamicLayout instances.

Test: bit -t CtsTextTestCases:android.text.cts.DynamicLayoutTest
Test: bit -t CtsTextTestCases:android.text.cts.StaticLayoutTest
Fixes: 64372088
Bug: 64312574
Change-Id: I8ea6697d29da2ccbb433b64f17b4d1d6f254e8e1
parent 37076708
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -621,6 +621,8 @@ public class StaticLayout extends Layout {
        b.setLocales(paint.getTextLocales());

        mLineCount = 0;
        mEllipsized = false;
        mMaxLineHeight = DEFAULT_MAX_LINE_HEIGHT;

        int v = 0;
        boolean needMultiply = (spacingmult != 1 || spacingadd != 0);
@@ -1403,7 +1405,7 @@ public class StaticLayout extends Layout {
     * The value is the same as getLineTop(maxLines) for ellipsized version where structurally no
     * more than maxLines is contained.
     */
    private int mMaxLineHeight = -1;
    private int mMaxLineHeight = DEFAULT_MAX_LINE_HEIGHT;

    private static final int COLUMNS_NORMAL = 5;
    private static final int COLUMNS_ELLIPSIZE = 7;
@@ -1432,6 +1434,8 @@ public class StaticLayout extends Layout {

    private static final double EXTRA_ROUNDING = 0.5;

    private static final int DEFAULT_MAX_LINE_HEIGHT = -1;

    // This is used to return three arrays from a single JNI call when
    // performing line breaking
    /*package*/ static class LineBreaks {