diff --git a/app/src/main/java/net/gsantner/markor/frontend/textview/HighlightingEditor.java b/app/src/main/java/net/gsantner/markor/frontend/textview/HighlightingEditor.java index 6c3c2d7cec..f97d0c803d 100644 --- a/app/src/main/java/net/gsantner/markor/frontend/textview/HighlightingEditor.java +++ b/app/src/main/java/net/gsantner/markor/frontend/textview/HighlightingEditor.java @@ -155,7 +155,8 @@ private boolean runHighlight(final boolean recompute) { private void updateHighlighting() { if (runHighlight(false)) { - batch(() -> _hl.clearDynamic().applyDynamic(hlRegion())); + // Do not batch as we do not want to reflow + _hl.clearDynamic().applyDynamic(hlRegion()); _oldHlRect.set(_hlRect); } } diff --git a/app/src/main/java/net/gsantner/markor/frontend/textview/SyntaxHighlighterBase.java b/app/src/main/java/net/gsantner/markor/frontend/textview/SyntaxHighlighterBase.java index 6eddc7ff7c..669bca217d 100644 --- a/app/src/main/java/net/gsantner/markor/frontend/textview/SyntaxHighlighterBase.java +++ b/app/src/main/java/net/gsantner/markor/frontend/textview/SyntaxHighlighterBase.java @@ -183,16 +183,22 @@ public SyntaxHighlighterBase clearStatic() { return this; } + boolean hasStatic = false; for (int i = _groups.size() - 1; i >= 0; i--) { final SpanGroup group = _groups.get(i); if (group.isStatic) { + hasStatic = true; _spannable.removeSpan(group.span); } } + if (hasStatic) { + reflow(); + } + _staticApplied = false; - return reflow(); + return this; } /** @@ -338,15 +344,21 @@ public SyntaxHighlighterBase applyStatic() { applyFixup(); + boolean hasStatic = false; for (final SpanGroup group : _groups) { if (group.isStatic) { + hasStatic = true; _spannable.setSpan(group.span, group.start, group.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } + if (hasStatic) { + reflow(); + } + _staticApplied = true; - return reflow(); + return this; } public final SyntaxHighlighterBase reflow() {