From abd135baef81f53456438b9802be792fb6375e01 Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 4 Apr 2021 14:53:25 +0200 Subject: [PATCH] Refactoring --- .../java/eu/faircode/email/ActivityEML.java | 15 +-------------- .../java/eu/faircode/email/AdapterMessage.java | 14 +------------- .../eu/faircode/email/FragmentCompose.java | 15 +-------------- .../main/java/eu/faircode/email/Helper.java | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityEML.java b/app/src/main/java/eu/faircode/email/ActivityEML.java index e6e5d83113..5183645e20 100644 --- a/app/src/main/java/eu/faircode/email/ActivityEML.java +++ b/app/src/main/java/eu/faircode/email/ActivityEML.java @@ -28,7 +28,6 @@ import android.content.SharedPreferences; import android.graphics.Typeface; import android.net.Uri; import android.os.Bundle; -import android.text.Layout; import android.text.Spannable; import android.text.Spanned; import android.text.TextUtils; @@ -123,19 +122,7 @@ public class ActivityEML extends ActivityBase { @Override public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { - int x = (int) event.getX(); - int y = (int) event.getY(); - - x -= widget.getTotalPaddingLeft(); - y -= widget.getTotalPaddingTop(); - - x += widget.getScrollX(); - y += widget.getScrollY(); - - Layout layout = widget.getLayout(); - int line = layout.getLineForVertical(y); - int off = layout.getOffsetForHorizontal(line, x); - + int off = Helper.getOffset(widget, buffer, event); URLSpan[] link = buffer.getSpans(off, off, URLSpan.class); if (link.length > 0) { String url = link[0].getURL(); diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 48e35da52e..5e8a3b068a 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -56,7 +56,6 @@ import android.provider.ContactsContract; import android.provider.Settings; import android.text.Editable; import android.text.Html; -import android.text.Layout; import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; @@ -4257,18 +4256,7 @@ public class AdapterMessage extends RecyclerView.Adapter 0) { String url = link[0].getURL(); diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 8afc3f888d..d9bced2184 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -50,6 +50,8 @@ import android.provider.Settings; import android.security.KeyChain; import android.security.KeyChainAliasCallback; import android.security.KeyChainException; +import android.text.Layout; +import android.text.Spannable; import android.text.TextUtils; import android.text.format.DateUtils; import android.text.format.Time; @@ -57,6 +59,7 @@ import android.util.TypedValue; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; @@ -793,6 +796,21 @@ public class Helper { } } + static int getOffset(TextView widget, Spannable buffer, MotionEvent event) { + int x = (int) event.getX(); + int y = (int) event.getY(); + + x -= widget.getTotalPaddingLeft(); + y -= widget.getTotalPaddingTop(); + + x += widget.getScrollX(); + y += widget.getScrollY(); + + Layout layout = widget.getLayout(); + int line = layout.getLineForVertical(y); + return layout.getOffsetForHorizontal(line, x); + } + // Graphics static int dp2pixels(Context context, int dp) {