Fixed the indexes bug for margin spans
This commit is contained in:
parent
d1d3f51704
commit
672ae215d9
@ -204,8 +204,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
|
|||||||
setSpan(length, new OrderedListItemSpan(
|
setSpan(length, new OrderedListItemSpan(
|
||||||
configuration.theme(),
|
configuration.theme(),
|
||||||
String.valueOf(start) + "." + '\u00a0',
|
String.valueOf(start) + "." + '\u00a0',
|
||||||
blockQuoteIndent,
|
blockQuoteIndent
|
||||||
length
|
|
||||||
));
|
));
|
||||||
|
|
||||||
// after we have visited the children increment start number
|
// after we have visited the children increment start number
|
||||||
@ -219,8 +218,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
|
|||||||
setSpan(length, new BulletListItemSpan(
|
setSpan(length, new BulletListItemSpan(
|
||||||
configuration.theme(),
|
configuration.theme(),
|
||||||
blockQuoteIndent,
|
blockQuoteIndent,
|
||||||
listLevel - 1,
|
listLevel - 1
|
||||||
length
|
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -253,7 +251,7 @@ public class SpannableMarkdownVisitor extends AbstractVisitor {
|
|||||||
setSpan(length, new HeadingSpan(
|
setSpan(length, new HeadingSpan(
|
||||||
configuration.theme(),
|
configuration.theme(),
|
||||||
heading.getLevel(),
|
heading.getLevel(),
|
||||||
builder.length())
|
builder.length() - length)
|
||||||
);
|
);
|
||||||
|
|
||||||
newLine();
|
newLine();
|
||||||
|
@ -19,17 +19,14 @@ public class BulletListItemSpan implements LeadingMarginSpan {
|
|||||||
|
|
||||||
private final int blockIndent;
|
private final int blockIndent;
|
||||||
private final int level;
|
private final int level;
|
||||||
private final int start;
|
|
||||||
|
|
||||||
public BulletListItemSpan(
|
public BulletListItemSpan(
|
||||||
@NonNull SpannableTheme theme,
|
@NonNull SpannableTheme theme,
|
||||||
@IntRange(from = 0) int blockIndent,
|
@IntRange(from = 0) int blockIndent,
|
||||||
@IntRange(from = 0) int level,
|
@IntRange(from = 0) int level) {
|
||||||
@IntRange(from = 0) int start) {
|
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.blockIndent = blockIndent;
|
this.blockIndent = blockIndent;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.start = start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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) {
|
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 there was a line break, we don't need to draw anything
|
||||||
if (this.start != start) {
|
if (!first) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,12 +16,12 @@ public class HeadingSpan extends MetricAffectingSpan implements LeadingMarginSpa
|
|||||||
private final Rect rect = ObjectsPool.rect();
|
private final Rect rect = ObjectsPool.rect();
|
||||||
private final Paint paint = ObjectsPool.paint();
|
private final Paint paint = ObjectsPool.paint();
|
||||||
private final int level;
|
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.theme = theme;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.end = end;
|
this.textLength = textLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,8 +50,7 @@ public class HeadingSpan extends MetricAffectingSpan implements LeadingMarginSpa
|
|||||||
if (level == 1
|
if (level == 1
|
||||||
|| level == 2) {
|
|| level == 2) {
|
||||||
|
|
||||||
if (this.end == end) {
|
if ((start + textLength) == end) {
|
||||||
|
|
||||||
paint.set(p);
|
paint.set(p);
|
||||||
|
|
||||||
theme.applyHeadingBreakStyle(paint);
|
theme.applyHeadingBreakStyle(paint);
|
||||||
|
@ -12,18 +12,15 @@ public class OrderedListItemSpan implements LeadingMarginSpan {
|
|||||||
private final SpannableTheme theme;
|
private final SpannableTheme theme;
|
||||||
private final String number;
|
private final String number;
|
||||||
private final int blockIndent;
|
private final int blockIndent;
|
||||||
private final int start;
|
|
||||||
|
|
||||||
public OrderedListItemSpan(
|
public OrderedListItemSpan(
|
||||||
@NonNull SpannableTheme theme,
|
@NonNull SpannableTheme theme,
|
||||||
@NonNull String number,
|
@NonNull String number,
|
||||||
@IntRange(from = 0) int blockIndent,
|
@IntRange(from = 0) int blockIndent
|
||||||
@IntRange(from = 0) int start
|
|
||||||
) {
|
) {
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.number = number;
|
this.number = number;
|
||||||
this.blockIndent = blockIndent;
|
this.blockIndent = blockIndent;
|
||||||
this.start = start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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) {
|
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 there was a line break, we don't need to draw anything
|
||||||
if (this.start != start) {
|
if (!first) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ public class TaskListSpan implements LeadingMarginSpan {
|
|||||||
@Override
|
@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) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user