Skip to content

Commit a2c2435

Browse files
committed
Added support for inserting images into block elements.
1 parent 8efdae5 commit a2c2435

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

aztec/src/main/kotlin/org/wordpress/aztec/formatting/LineBlockFormatter.kt

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -270,14 +270,31 @@ class LineBlockFormatter(editor: AztecText, val headerStyle: LineBlockFormatter.
270270
}
271271

272272
fun insertMedia(drawable: Drawable, source: String) {
273-
val mediaStartIndex = selectionStart
274-
val mediaEndIndex = selectionStart + source.length
275273

276-
editor.disableTextChangedListener()
274+
val isAddingMediaToEndOfBlockElement = editableText.getSpans(selectionStart, selectionEnd, AztecBlockSpan::class.java)
275+
.any {
276+
selectionStart == editableText.getSpanEnd(it)
277+
}
278+
279+
val spanAtStartOfWhichMediaIsAdded = editableText.getSpans(selectionStart, selectionEnd, AztecBlockSpan::class.java)
280+
.firstOrNull {
281+
selectionStart == editableText.getSpanStart(it)
282+
}
283+
284+
val modifier = if (isAddingMediaToEndOfBlockElement) 1 else 0
285+
286+
val mediaStartIndex = selectionStart - modifier
287+
val mediaEndIndex = selectionStart + source.length - modifier
288+
289+
if (!isAddingMediaToEndOfBlockElement)
290+
editor.disableTextChangedListener()
291+
277292
editableText.replace(selectionStart, selectionEnd, source)
278293

279-
editor.removeBlockStylesFromRange(mediaStartIndex, mediaEndIndex, true)
280-
editor.removeHeadingStylesFromRange(mediaStartIndex, mediaEndIndex)
294+
if (spanAtStartOfWhichMediaIsAdded != null) {
295+
editableText.setSpan(spanAtStartOfWhichMediaIsAdded, mediaStartIndex, editableText.getSpanEnd(spanAtStartOfWhichMediaIsAdded), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
296+
}
297+
281298
editor.removeInlineStylesFromRange(mediaStartIndex, mediaEndIndex)
282299

283300
val span = AztecMediaSpan(editor.context, drawable, source)

0 commit comments

Comments
 (0)