From 3a2daaa2fa491bd85cf82004bda985fce18f6ddb Mon Sep 17 00:00:00 2001 From: Harshad Vedartham Date: Tue, 27 Aug 2024 13:06:52 -0700 Subject: [PATCH] Tweaks to reflow --- .../frontend/textview/HighlightingEditor.java | 3 ++- .../frontend/textview/SyntaxHighlighterBase.java | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) 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() {