Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions app/src/main/java/org/wikipedia/richtext/CustomHtmlParser.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import android.text.Html.TagHandler
import android.text.Spannable
import android.text.Spanned
import android.text.style.LeadingMarginSpan
import android.text.style.ParagraphStyle
import android.text.style.TypefaceSpan
import android.text.style.URLSpan
import android.widget.TextView
Expand Down Expand Up @@ -201,9 +202,19 @@ class CustomHtmlParser(private val handler: TagHandler) : TagHandler, ContentHan
if (listParents.last() == "ol") {
val count = (if (listItemCounts.size > 0) listItemCounts.pop() else 0) + 1
listItemCounts.push(count)
val spans = output.getSpans<LeadingMarginSpan>(output.length)
if (spans.isNotEmpty()) {
val span = spans.last()
// TODO: improve this logic to no longer require explicitly inserting the count
// into the output text. This requires manual and fragile manipulation of any
// existing spans that may be present in the output text.
val paragraphSpans = output.getSpans<ParagraphStyle>(output.length)
var lastLeadingSpan: LeadingMarginSpan? = null
paragraphSpans.forEach {
if (it !is LeadingMarginSpan) {
output.removeSpan(it)
} else {
lastLeadingSpan = it
}
}
lastLeadingSpan?.let { span ->
val spanStart = output.getSpanStart(span)
output.removeSpan(span)
output.insert(spanStart, "$count. ")
Expand Down
Loading