Fixed the indexes bug for margin spans

This commit is contained in:
Dimitry Ivanov 2017-10-24 18:00:40 +03:00
parent d1d3f51704
commit 672ae215d9
5 changed files with 12 additions and 21 deletions

View File

@ -204,8 +204,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
setSpan(length, new OrderedListItemSpan(
configuration.theme(),
String.valueOf(start) + "." + '\u00a0',
blockQuoteIndent,
length
blockQuoteIndent
));
// after we have visited the children increment start number
@ -219,8 +218,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
setSpan(length, new BulletListItemSpan(
configuration.theme(),
blockQuoteIndent,
listLevel - 1,
length
listLevel - 1
));
}
@ -253,7 +251,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
setSpan(length, new HeadingSpan(
configuration.theme(),
heading.getLevel(),
builder.length())
builder.length() - length)
);
newLine();

View File

@ -19,17 +19,14 @@ public class BulletListItemSpan implements LeadingMarginSpan {
private final int blockIndent;
private final int level;
private final int start;
public BulletListItemSpan(
@NonNull SpannableTheme theme,
@IntRange(from = 0) int blockIndent,
@IntRange(from = 0) int level,
@IntRange(from = 0) int start) {
@IntRange(from = 0) int level) {
this.theme = theme;
this.blockIndent = blockIndent;
this.level = level;
this.start = start;
}
@Override
@ -41,7 +38,7 @@ public class BulletListItemSpan implements LeadingMarginSpan {
public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) {
// if there was a line break, we don't need to draw anything
if (this.start != start) {
if (!first) {
return;
}

View File

@ -16,12 +16,12 @@ public class HeadingSpan extends MetricAffectingSpan implements LeadingMarginSpa
private final Rect rect = ObjectsPool.rect();
private final Paint paint = ObjectsPool.paint();
private final int level;
private final int end;
private final int textLength;
public HeadingSpan(@NonNull SpannableTheme theme, @IntRange(from = 1, to = 6) int level, @IntRange(from = 0) int end) {
public HeadingSpan(@NonNull SpannableTheme theme, @IntRange(from = 1, to = 6) int level, @IntRange(from = 0) int textLength) {
this.theme = theme;
this.level = level;
this.end = end;
this.textLength = textLength;
}
@Override
@ -50,8 +50,7 @@ public class HeadingSpan extends MetricAffectingSpan implements LeadingMarginSpa
if (level == 1
|| level == 2) {
if (this.end == end) {
if ((start + textLength) == end) {
paint.set(p);
theme.applyHeadingBreakStyle(paint);

View File

@ -12,18 +12,15 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
private final SpannableTheme theme;
private final String number;
private final int blockIndent;
private final int start;
public OrderedListItemSpan(
@NonNull SpannableTheme theme,
@NonNull String number,
@IntRange(from = 0) int blockIndent,
@IntRange(from = 0) int start
@IntRange(from = 0) int blockIndent
) {
this.theme = theme;
this.number = number;
this.blockIndent = blockIndent;
this.start = start;
}
@Override
@ -35,7 +32,7 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) {
// if there was a line break, we don't need to draw anything
if (this.start != start) {
if (!first) {
return;
}

View File

@ -32,7 +32,7 @@ public class TaskListSpan implements LeadingMarginSpan {
@Override
public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, int baseline, int bottom, CharSequence text, int start, int end, boolean first, Layout layout) {
if (this.start != start) {
if (!first) {
return;
}