diff options
Diffstat (limited to 'android/text/Layout.java')
-rw-r--r-- | android/text/Layout.java | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/android/text/Layout.java b/android/text/Layout.java index ac5c2e92..60fff738 100644 --- a/android/text/Layout.java +++ b/android/text/Layout.java @@ -319,6 +319,8 @@ public abstract class Layout { private float getJustifyWidth(int lineNum) { Alignment paraAlign = mAlignment; + TabStops tabStops = null; + boolean tabStopsIsInitialized = false; int left = 0; int right = mWidth; @@ -369,6 +371,10 @@ public abstract class Layout { } } + if (getLineContainsTab(lineNum)) { + tabStops = new TabStops(TAB_INCREMENT, spans); + } + final Alignment align; if (paraAlign == Alignment.ALIGN_LEFT) { align = (dir == DIR_LEFT_TO_RIGHT) ? Alignment.ALIGN_NORMAL : Alignment.ALIGN_OPPOSITE; @@ -1417,6 +1423,7 @@ public abstract class Layout { float dist = Math.abs(getHorizontal(max, primary) - horiz); if (dist <= bestdist) { + bestdist = dist; best = max; } @@ -1563,7 +1570,7 @@ public abstract class Layout { // XXX: we don't care about tabs tl.set(mPaint, mText, lineStart, lineEnd, lineDir, directions, false, null); caret = lineStart + tl.getOffsetToLeftRightOf(caret - lineStart, toLeft); - TextLine.recycle(tl); + tl = TextLine.recycle(tl); return caret; } @@ -1887,7 +1894,10 @@ public abstract class Layout { int margin = 0; - boolean useFirstLineMargin = lineStart == 0 || spanned.charAt(lineStart - 1) == '\n'; + boolean isFirstParaLine = lineStart == 0 || + spanned.charAt(lineStart - 1) == '\n'; + + boolean useFirstLineMargin = isFirstParaLine; for (int i = 0; i < spans.length; i++) { if (spans[i] instanceof LeadingMarginSpan2) { int spStart = spanned.getSpanStart(spans[i]); |