@@ -9,14 +9,19 @@ import android.widget.TextView
99import org.wordpress.aztec.spans.AztecMediaClickableSpan
1010import org.wordpress.aztec.spans.AztecURLSpan
1111import org.wordpress.aztec.spans.UnknownClickableSpan
12+ import java.lang.ref.WeakReference
1213
1314/* *
1415 * http://stackoverflow.com/a/23566268/569430
1516 */
1617object EnhancedMovementMethod : ArrowKeyMovementMethod() {
1718 var taskListClickHandler: TaskListClickHandler ? = null
19+ private var linkTappedListenerRef: WeakReference <AztecText .OnLinkTappedListener ?> = WeakReference (null )
1820 var isLinkTapEnabled = false
19- var linkTappedListener: AztecText .OnLinkTappedListener ? = null
21+
22+ fun setLinkTappedListener (listener : AztecText .OnLinkTappedListener ? ) {
23+ linkTappedListenerRef = WeakReference (listener)
24+ }
2025
2126 override fun onTouchEvent (widget : TextView , text : Spannable , event : MotionEvent ): Boolean {
2227 val action = event.action
@@ -38,7 +43,9 @@ object EnhancedMovementMethod : ArrowKeyMovementMethod() {
3843 val off = layout.getOffsetForHorizontal(line, x.toFloat())
3944
4045 // This handles the case when the task list checkbox is clicked
41- if (taskListClickHandler?.handleTaskListClick(text, off, x, widget.totalPaddingStart) == true ) return true
46+ if (taskListClickHandler?.handleTaskListClick(text, off, x, widget.totalPaddingStart) == true ) {
47+ return true
48+ }
4249
4350 // get the character's position. This may be the left or the right edge of the character so, find the
4451 // other edge by inspecting nearby characters (if they exist)
@@ -85,7 +92,7 @@ object EnhancedMovementMethod : ArrowKeyMovementMethod() {
8592 link.onClick(widget)
8693 return true
8794 } else if (link is AztecURLSpan && isLinkTapEnabled) {
88- linkTappedListener ?.onLinkTapped(widget, link.url) ? : link.onClick(widget)
95+ linkTappedListenerRef.get() ?.onLinkTapped(widget, link.url) ? : link.onClick(widget)
8996 return true
9097 }
9198 }
0 commit comments