summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget
diff options
context:
space:
mode:
authorGilles Debunne <debunne@google.com>2010-12-21 12:53:58 -0800
committerGilles Debunne <debunne@google.com>2010-12-21 13:37:05 -0800
commitf3895edf4b21e1083b58cdb36b93223ecaa98ca8 (patch)
tree3c4297a1cc4dff9cfbf6b9ab620e867abb71a391 /core/java/android/widget
parentd69313da4cbee8ce9ada83dc75a9d334c88734bc (diff)
downloadframeworks_base-f3895edf4b21e1083b58cdb36b93223ecaa98ca8.zip
frameworks_base-f3895edf4b21e1083b58cdb36b93223ecaa98ca8.tar.gz
frameworks_base-f3895edf4b21e1083b58cdb36b93223ecaa98ca8.tar.bz2
Links are clickable in TextView when textIsSelectable.
Bug 3299410 Change-Id: I921c9eecbfef1d81b0d0e2ad2129400c58f165a1
Diffstat (limited to 'core/java/android/widget')
-rw-r--r--core/java/android/widget/TextView.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 052760f..0699ac2 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -81,6 +81,7 @@ import android.text.method.SingleLineTransformationMethod;
import android.text.method.TextKeyListener;
import android.text.method.TimeKeyListener;
import android.text.method.TransformationMethod;
+import android.text.style.ClickableSpan;
import android.text.style.ParagraphStyle;
import android.text.style.URLSpan;
import android.text.style.UpdateAppearance;
@@ -7238,6 +7239,19 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
handled |= mMovement.onTouchEvent(this, (Spannable) mText, event);
}
+ if (mLinksClickable && mAutoLinkMask != 0 && mTextIsSelectable &&
+ action == MotionEvent.ACTION_UP && !mIgnoreActionUpEvent && isFocused()) {
+ // The LinkMovementMethod which should handle taps on links has not been installed
+ // to support text selection. We reproduce its behavior here to open links.
+ ClickableSpan[] links = ((Spannable) mText).getSpans(getSelectionStart(),
+ getSelectionEnd(), ClickableSpan.class);
+
+ if (links.length != 0) {
+ links[0].onClick(this);
+ handled = true;
+ }
+ }
+
if (isTextEditable() || mTextIsSelectable) {
if (mScrollX != oldScrollX || mScrollY != oldScrollY) {
// Hide insertion anchor while scrolling. Leave selection.