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

Commit 6b558994 authored by Raph Levien's avatar Raph Levien
Browse files

Fix for bug 6954231 text wraps on second line and is fused...

When breaking a line, the paragraphs below the new line break were still
being drawn in their old location. This only happened when the height
was fill_parent, otherwise the height change would force a relayout,
which in turn would do a full invalidation.

This patch checks for changes to the layout height (not just the widget
height, which won't change when it's fill_parent), and invalidates.

Change-Id: I64adb9f5eae0479c1c9c8d37c10c2c27a6f582a8
parent 48315436
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -122,6 +122,7 @@ public class Editor {
    InputMethodState mInputMethodState;

    DisplayList[] mTextDisplayLists;
    int mLastLayoutHeight;

    boolean mFrozenWithFocus;
    boolean mSelectionMoved;
@@ -1258,6 +1259,16 @@ public class Editor {
                mTextDisplayLists = new DisplayList[ArrayUtils.idealObjectArraySize(0)];
            }

            // If the height of the layout changes (usually when inserting or deleting a line,
            // but could be changes within a span), invalidate everything. We could optimize
            // more aggressively (for example, adding offsets to blocks) but it would be more
            // complex and we would only get the benefit in some cases.
            int layoutHeight = layout.getHeight();
            if (mLastLayoutHeight != layoutHeight) {
                invalidateTextDisplayList();
                mLastLayoutHeight = layoutHeight;
            }

            DynamicLayout dynamicLayout = (DynamicLayout) layout;
            int[] blockEndLines = dynamicLayout.getBlockEndLines();
            int[] blockIndices = dynamicLayout.getBlockIndices();