@@ -24,10 +24,11 @@ abstract class BlockHandler<SpanType : IAztecBlockSpan>(val clazz: Class<SpanTyp
2424 var newlineIndex: Int = - 1
2525 var nestingLevel = 0
2626 var markerIndex: Int = - 1
27+ var isReplay = false
2728
28- override fun handleTextChanged (text : Spannable , inputStart : Int , count : Int , nestingLevel : Int ) {
29+ override fun handleTextChanged (text : Spannable , inputStart : Int , count : Int , nestingLevel : Int , isReplay : Boolean ) {
2930 this .text = text
30-
31+ this .isReplay = isReplay
3132 this .nestingLevel = nestingLevel
3233
3334 // use charsNew to get the spans at the input point. It appears to be more reliable vs the whole Editable.
@@ -92,9 +93,10 @@ abstract class BlockHandler<SpanType : IAztecBlockSpan>(val clazz: Class<SpanTyp
9293 }
9394
9495 // prev newline needs to be at the same nesting level to account for "double-enter"
96+ val prevNewlineNesting = IAztecNestable .getNestingLevelAt(text, newlineIndex - 1 , newlineIndex)
97+ val currentNewlineNesting = IAztecNestable .getNestingLevelAt(text, newlineIndex, newlineIndex + 1 )
9598 if (text[newlineIndex - 1 ] == Constants .NEWLINE
96- && IAztecNestable .getNestingLevelAt(text, newlineIndex - 1 , newlineIndex) ==
97- IAztecNestable .getNestingLevelAt(text, newlineIndex, newlineIndex + 1 )
99+ && (prevNewlineNesting == currentNewlineNesting || prevNewlineNesting > currentNewlineNesting && ! isReplay)
98100 && atEndOfBlock) {
99101 return PositionType .EMPTY_LINE_AT_BLOCK_END
100102 }
0 commit comments