@@ -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