mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-18 05:57:44 +00:00
Fix links not working when message is partially offscreen
This commit is contained in:
parent
99cb10f5be
commit
8d38d1c0fb
@ -38,13 +38,12 @@ object TextUtilities {
|
|||||||
fun TextView.getIntersectedModalSpans(hitRect: Rect): List<ModalURLSpan> {
|
fun TextView.getIntersectedModalSpans(hitRect: Rect): List<ModalURLSpan> {
|
||||||
val textLayout = layout ?: return emptyList()
|
val textLayout = layout ?: return emptyList()
|
||||||
val lineRect = Rect()
|
val lineRect = Rect()
|
||||||
val bodyTextRect = Rect()
|
val offset = intArrayOf(0, 0).also { getLocationOnScreen(it) }
|
||||||
getGlobalVisibleRect(bodyTextRect)
|
|
||||||
val textSpannable = text.toSpannable()
|
val textSpannable = text.toSpannable()
|
||||||
return (0 until textLayout.lineCount).flatMap { line ->
|
return (0 until textLayout.lineCount).flatMap { line ->
|
||||||
textLayout.getLineBounds(line, lineRect)
|
textLayout.getLineBounds(line, lineRect)
|
||||||
lineRect.offset(bodyTextRect.left + totalPaddingLeft, bodyTextRect.top + totalPaddingTop)
|
lineRect.offset(offset[0] + totalPaddingLeft, offset[1] + totalPaddingTop)
|
||||||
if ((Rect(lineRect)).contains(hitRect)) {
|
if (lineRect.contains(hitRect)) {
|
||||||
// calculate the url span intersected with (if any)
|
// calculate the url span intersected with (if any)
|
||||||
val off = textLayout.getOffsetForHorizontal(line, hitRect.left.toFloat()) // left and right will be the same
|
val off = textLayout.getOffsetForHorizontal(line, hitRect.left.toFloat()) // left and right will be the same
|
||||||
textSpannable.getSpans<ModalURLSpan>(off, off).toList()
|
textSpannable.getSpans<ModalURLSpan>(off, off).toList()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user