diff --git a/app/src/main/java/eu/faircode/email/StyleHelper.java b/app/src/main/java/eu/faircode/email/StyleHelper.java index 12d316a332..4bf87ca331 100644 --- a/app/src/main/java/eu/faircode/email/StyleHelper.java +++ b/app/src/main/java/eu/faircode/email/StyleHelper.java @@ -1769,8 +1769,37 @@ public class StyleHelper { static void markAsInserted(Editable text, int start, int end) { for (InsertedSpan span : text.getSpans(0, text.length(), InsertedSpan.class)) text.removeSpan(span); - if (start >= 0 && start < end && end <= text.length()) - text.setSpan(new InsertedSpan(), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + if (start >= 0 && start < end && end <= text.length()) { + /* + java.lang.IndexOutOfBoundsException: Invalid Context Range: 0, 1 must be in 0, 0 + at android.graphics.Paint.getRunCharacterAdvance(Paint.java:3541) + at android.text.TextLine.getRunAdvance(TextLine.java:1274) + at android.text.TextLine.handleText(TextLine.java:1361) + at android.text.TextLine.handleRun(TextLine.java:1640) + at android.text.TextLine.measureRun(TextLine.java:882) + at android.text.TextLine.measure(TextLine.java:604) + at android.text.TextLine.metrics(TextLine.java:494) + at android.text.Layout.getLineExtent(Layout.java:1896) + at android.text.Layout.getLineMax(Layout.java:1843) + at android.text.Layout.getLineRight(Layout.java:1833) + at android.widget.TextView.getCursorAnchorInfo(TextView.java:14517) + at android.widget.Editor$CursorAnchorInfoNotifier.updatePosition(Editor.java:4883) + at android.widget.Editor$PositionListener.onPreDraw(Editor.java:3750) + at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1176) + at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4158) + at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2836) + at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10145) + at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1406) + at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1415) + at android.view.Choreographer.doCallbacks(Choreographer.java:1015) + at android.view.Choreographer.doFrame(Choreographer.java:945) + at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1389) + at android.os.Handler.handleCallback(Handler.java:959) + */ + Pair range = ensureParagraph(text, start, end); + if (range != null) + text.setSpan(new InsertedSpan(), range.first, range.second, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } } static class InsertedSpan implements NoCopySpan {