From ccb80264622b436bcaebccf05a12d139233e919f Mon Sep 17 00:00:00 2001 From: Mikael Sand Date: Sat, 16 Feb 2019 03:08:01 +0200 Subject: [PATCH] [android] Fix text onPress handling, improve caching #941 --- .../main/java/com/horcrux/svg/TSpanView.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/horcrux/svg/TSpanView.java b/android/src/main/java/com/horcrux/svg/TSpanView.java index a9274823..2663b153 100644 --- a/android/src/main/java/com/horcrux/svg/TSpanView.java +++ b/android/src/main/java/com/horcrux/svg/TSpanView.java @@ -48,6 +48,7 @@ class TSpanView extends TextView { private static final String OTF = ".otf"; private static final String TTF = ".ttf"; + private Path mCachedPath; @Nullable String mContent; private TextPathView textPath; ArrayList emoji = new ArrayList<>(); @@ -63,6 +64,12 @@ class TSpanView extends TextView { invalidate(); } + @Override + public void invalidate() { + mCachedPath = null; + super.invalidate(); + } + @Override void draw(Canvas canvas, Paint paint, float opacity) { if (mContent != null) { @@ -89,21 +96,22 @@ class TSpanView extends TextView { @Override Path getPath(Canvas canvas, Paint paint) { - if (mPath != null) { - return mPath; + if (mCachedPath != null) { + return mCachedPath; } if (mContent == null) { - return getGroupPath(canvas, paint); + mCachedPath = getGroupPath(canvas, paint); + return mCachedPath; } setupTextPath(); pushGlyphContext(); - Path path = getLinePath(mContent, paint, canvas); + mCachedPath = getLinePath(mContent, paint, canvas); popGlyphContext(); - return path; + return mCachedPath; } double getSubtreeTextChunksTotalAdvance(Paint paint) {