From 0ae3a3d66e3e955b9ea93f9d03207950f97df17c Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Tue, 31 Mar 2020 23:41:10 +0300 Subject: [PATCH] Update changelog --- CHANGELOG.md | 2 ++ .../PrecomputedFutureTextSetterCompat.java | 19 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 31fc43d1..8dfd5358 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,10 +5,12 @@ * module `images`: `GifSupport` and `SvgSupport` use `Class.forName` instead access to full qualified class name * `ext-table`: fix links in tables ([#224]) * `ext-table`: proper borders (equal for all sides) +* module `core`: Add `PrecomputedFutureTextSetterCompat`
Thanks [@KirkBushman] [#216]: https://github.com/noties/Markwon/pull/216 [#224]: https://github.com/noties/Markwon/issues/224 [@francescocervone]: https://github.com/francescocervone +[@KirkBushman]: https://github.com/KirkBushman # 4.3.0 diff --git a/markwon-core/src/main/java/io/noties/markwon/PrecomputedFutureTextSetterCompat.java b/markwon-core/src/main/java/io/noties/markwon/PrecomputedFutureTextSetterCompat.java index 7e164a20..e107341c 100644 --- a/markwon-core/src/main/java/io/noties/markwon/PrecomputedFutureTextSetterCompat.java +++ b/markwon-core/src/main/java/io/noties/markwon/PrecomputedFutureTextSetterCompat.java @@ -1,7 +1,6 @@ package io.noties.markwon; import android.text.Spanned; -import android.util.Log; import android.widget.TextView; import androidx.annotation.NonNull; @@ -10,12 +9,14 @@ import androidx.appcompat.widget.AppCompatTextView; import androidx.core.text.PrecomputedTextCompat; import java.util.concurrent.Executor; +import java.util.concurrent.Future; /** * Please note this class requires `androidx.core:core` artifact being explicitly added to your dependencies. * This is intended to be used in a RecyclerView. * * @see io.noties.markwon.Markwon.TextSetter + * @since $nap; */ public class PrecomputedFutureTextSetterCompat implements Markwon.TextSetter { @@ -47,16 +48,18 @@ public class PrecomputedFutureTextSetterCompat implements Markwon.TextSetter { @NonNull Spanned markdown, @NonNull TextView.BufferType bufferType, @NonNull Runnable onComplete) { - if (textView instanceof AppCompatTextView) { - ((AppCompatTextView) textView).setTextFuture(PrecomputedTextCompat.getTextFuture( - markdown, ((AppCompatTextView) textView).getTextMetricsParamsCompat(), executor - )); - + final AppCompatTextView appCompatTextView = (AppCompatTextView) textView; + final Future future = PrecomputedTextCompat.getTextFuture( + markdown, + appCompatTextView.getTextMetricsParamsCompat(), + executor); + appCompatTextView.setTextFuture(future); + // `setTextFuture` is actually a synchronous call, so we should call onComplete now onComplete.run(); } else { - - throw new IllegalStateException("TextView provided is not a child of AppCompatTextView, cannot call setTextFuture()."); + throw new IllegalStateException("TextView provided is not an instance of AppCompatTextView, " + + "cannot call setTextFuture(), textView: " + textView); } } }