Spannable -> Spanned (#51006)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/51006

Moves a bit of code, reading spans that we may not control, to query for `Spanned`, instead of `Spannable`, since some code (see last diff around ellipsization) may wrap intermediate Spannables.

Changelog: [internal]

Reviewed By: joevilches

Differential Revision: D73820368

fbshipit-source-id: e107bcf1f2f7d5555fca68fb2209c12c3f99c099
This commit is contained in:
Nick Gerleman
2025-04-29 18:45:58 -07:00
committed by Facebook GitHub Bot
parent 746275ff14
commit e43c5db84b
2 changed files with 6 additions and 8 deletions
@@ -8,7 +8,7 @@
package com.facebook.react.views.text
import android.text.Layout
import android.text.Spannable
import android.text.Spanned
import android.view.View
import com.facebook.react.R
import com.facebook.react.internal.SystraceSection
@@ -69,15 +69,14 @@ internal class PreparedLayoutTextViewManager :
// If this text view contains any clickable spans, set a view tag and reset the accessibility
// delegate so that these can be picked up by the accessibility system.
if (layout.text is Spannable) {
val spannableText = layout.text as Spannable
if (layout.text is Spanned) {
val spannedText = layout.text as Spanned
val clickableSpans =
spannableText.getSpans(0, layout.text.length, ReactClickableSpan::class.java)
spannedText.getSpans(0, layout.text.length, ReactClickableSpan::class.java)
view.setTag(
R.id.accessibility_links,
if (clickableSpans.size > 0) AccessibilityLinks(clickableSpans, spannableText)
else null)
if (clickableSpans.size > 0) AccessibilityLinks(clickableSpans, spannedText) else null)
ReactTextViewAccessibilityDelegate.resetDelegate(
view, view.isFocusable, view.importantForAccessibility)
}
@@ -10,7 +10,6 @@ package com.facebook.react.views.text
import android.graphics.Paint
import android.graphics.Rect
import android.os.Bundle
import android.text.Spannable
import android.text.Spanned
import android.text.style.AbsoluteSizeSpan
import android.text.style.ClickableSpan
@@ -270,7 +269,7 @@ internal class ReactTextViewAccessibilityDelegate : ReactAccessibilityDelegate {
return null
}
public class AccessibilityLinks(spans: Array<out ClickableSpan>, text: Spannable) {
public class AccessibilityLinks(spans: Array<out ClickableSpan>, text: Spanned) {
private val links: List<AccessibleLink>
init {