@@ -239,19 +239,7 @@ class ExperimentalTextInput(
239239 override fun PrimitiveComponentScope.render (): LithoPrimitive {
240240 val mountedView = useState { AtomicReference <EditTextWithEventHandlers ?>() }
241241 val savedText = useState { AtomicReference (initialText) }
242- val useSeqNumberForRemeasuringTextInput =
243- useState { ComponentsConfiguration .useSeqNumberForRemeasuringTextInput }.value
244- val savedTextWithoutSpans = useState {
245- if (useSeqNumberForRemeasuringTextInput) {
246- AtomicReference (initialText.toString() as CharSequence )
247- } else {
248- null
249- }
250- }
251-
252- // control
253- val textAndConstraintsForMeasure = useState { TextAndConstraints (initialText.toString(), null ) }
254- // test
242+ val savedTextWithoutSpans = useState { AtomicReference (initialText.toString() as CharSequence ) }
255243 val measureSeqNumber = useState { 0 }
256244
257245 val resolvedHighlightColor = useCached {
@@ -306,8 +294,6 @@ class ExperimentalTextInput(
306294 savedText = savedText.value,
307295 savedTextWithoutSpans = savedTextWithoutSpans.value,
308296 measureSeqNumber = measureSeqNumber.value,
309- useSeqNumberForRemeasuringTextInput = useSeqNumberForRemeasuringTextInput,
310- textAndConstraintsForMeasure = textAndConstraintsForMeasure,
311297 ),
312298 mountBehavior =
313299 MountBehavior (
@@ -328,17 +314,15 @@ class ExperimentalTextInput(
328314 savedText.value,
329315 savedTextWithoutSpans.value,
330316 measureSeqNumber.value,
331- useSeqNumberForRemeasuringTextInput,
332- textAndConstraintsForMeasure.value) { editText ->
333- textInputController?.bind(
334- editText,
335- savedText.value,
336- savedTextWithoutSpans.value,
337- measureSeqNumber,
338- useSeqNumberForRemeasuringTextInput,
339- textAndConstraintsForMeasure)
340- onUnbind { textInputController?.unbind() }
341- }
317+ ) { editText ->
318+ textInputController?.bind(
319+ editText,
320+ savedText.value,
321+ savedTextWithoutSpans.value,
322+ measureSeqNumber,
323+ )
324+ onUnbind { textInputController?.unbind() }
325+ }
342326 }
343327 // OnMount
344328 withDescription(" text-input-equivalent-mount" ) {
@@ -457,9 +441,6 @@ class ExperimentalTextInput(
457441 editText.onInputConnection = onInputConnection
458442 editText.onTextPasted = onTextPasted
459443 editText.measureSeqNumber = measureSeqNumber
460- editText.useSeqNumberForRemeasuringTextInput =
461- useSeqNumberForRemeasuringTextInput
462- editText.textAndConstraintsForMeasure = textAndConstraintsForMeasure
463444
464445 onUnbind {
465446 editText.detachWatchers()
@@ -475,8 +456,6 @@ class ExperimentalTextInput(
475456 editText.customInsertionActionModeCallback = null
476457 editText.onTextPasted = null
477458 editText.measureSeqNumber = null
478- editText.useSeqNumberForRemeasuringTextInput = false
479- editText.textAndConstraintsForMeasure = null
480459 }
481460 }
482461 }
@@ -520,11 +499,8 @@ internal class TextInputLayoutBehavior(
520499 private val disableAutofill : Boolean ,
521500 private val movementMethod : MovementMethod ,
522501 private val measureSeqNumber : Int ,
523- private val useSeqNumberForRemeasuringTextInput : Boolean ,
524502 private val savedText : AtomicReference <CharSequence ?>,
525503 private val savedTextWithoutSpans : AtomicReference <CharSequence ?>? ,
526- // we're only reading it here in order to force remeasure if it gets updated
527- private val textAndConstraintsForMeasure : State <TextAndConstraints >,
528504) : LayoutBehavior {
529505 override fun LayoutScope.layout (sizeConstraints : SizeConstraints ): PrimitiveLayoutResult {
530506 // When input type has NO_SUGGESTIONS flag set then suggestion spans are removed when
@@ -572,13 +548,8 @@ internal class TextInputLayoutBehavior(
572548 importantForAutofill,
573549 autofillHints,
574550 disableAutofill,
575- // onMeasure happens:
576- // 1. After initState before onMount: savedText = initText.
577- // 2. After onMount before onUnmount: savedText preserved from underlying editText.
578- savedText.get(),
579551 savedTextWithoutSpans?.get(),
580- useSeqNumberForRemeasuringTextInput,
581- textAndConstraintsForMeasure)
552+ )
582553
583554 return PrimitiveLayoutResult (
584555 height = forMeasure.measuredHeight,
@@ -647,25 +618,9 @@ internal fun createAndMeasureEditText(
647618 importantForAutofill : Int ,
648619 autofillHints : Array <String ?>? ,
649620 disableAutofill : Boolean ,
650- text : CharSequence? ,
651621 textWithoutSpans : CharSequence? ,
652- useSeqNumberForRemeasuringTextInput : Boolean ,
653- textAndConstraintsForMeasure : State <TextAndConstraints >,
654622): EditText {
655- val textToMeasure =
656- if (useSeqNumberForRemeasuringTextInput) {
657- textWithoutSpans
658- } else {
659- // The height should be the measured height of EditText with relevant params
660- val constraints = textAndConstraintsForMeasure.value.constraints
661-
662- if (sizeConstraints == constraints) {
663- // If text contains Spans, we don't want it to be mutable for the measurement case
664- textAndConstraintsForMeasure.value.text
665- } else {
666- text
667- }
668- }
623+ val textToMeasure = textWithoutSpans
669624
670625 val forMeasure = ForMeasureEditText (context)
671626
@@ -899,8 +854,6 @@ internal class EditTextWithEventHandlers(context: Context?) :
899854 var onInputConnection: ((InputConnection ? , EditorInfo ) -> InputConnection ? )? = null
900855 var componentContext: ComponentContext ? = null
901856 var measureSeqNumber: State <Int >? = null
902- var useSeqNumberForRemeasuringTextInput: Boolean = false
903- var textAndConstraintsForMeasure: State <TextAndConstraints >? = null
904857 private var textState: AtomicReference <CharSequence ?>? = null
905858 private var textWithoutSpansState: AtomicReference <CharSequence ?>? = null
906859 private var textLineCount = UNMEASURED_LINE_COUNT
@@ -910,9 +863,6 @@ internal class EditTextWithEventHandlers(context: Context?) :
910863 private var disableAutofill = false
911864 private var isTextPasted = false
912865
913- private var lastWidthSpec: Int = - 1
914- private var lastHeightSpec: Int = - 1
915-
916866 private var onWindowFocusChangeListener: ViewTreeObserver .OnWindowFocusChangeListener ? = null
917867
918868 init {
@@ -924,9 +874,8 @@ internal class EditTextWithEventHandlers(context: Context?) :
924874 override fun onTextChanged (text : CharSequence , start : Int , lengthBefore : Int , lengthAfter : Int ) {
925875 super .onTextChanged(text, start, lengthBefore, lengthAfter)
926876 textState?.set(text)
927- if (useSeqNumberForRemeasuringTextInput) {
928- textWithoutSpansState?.set(text.toString())
929- }
877+ textWithoutSpansState?.set(text.toString())
878+
930879 onTextChanged?.invoke(this @EditTextWithEventHandlers, text.toString())
931880
932881 if (isTextPasted && onTextPasted != null ) {
@@ -938,18 +887,7 @@ internal class EditTextWithEventHandlers(context: Context?) :
938887 if (this .textLineCount != UNMEASURED_LINE_COUNT &&
939888 (this .textLineCount != lineCount) &&
940889 (componentContext != null )) {
941-
942- if (useSeqNumberForRemeasuringTextInput) {
943- val constraints =
944- if (lastWidthSpec != - 1 && lastHeightSpec != - 1 ) {
945- SizeConstraints .fromMeasureSpecs(lastWidthSpec, lastHeightSpec)
946- } else {
947- null
948- }
949- textAndConstraintsForMeasure?.update(TextAndConstraints (text.toString(), constraints))
950- } else {
951- measureSeqNumber?.update { it + 1 }
952- }
890+ measureSeqNumber?.update { it + 1 }
953891 }
954892 }
955893
@@ -962,8 +900,6 @@ internal class EditTextWithEventHandlers(context: Context?) :
962900
963901 override fun onMeasure (widthMeasureSpec : Int , heightMeasureSpec : Int ) {
964902 super .onMeasure(widthMeasureSpec, heightMeasureSpec)
965- lastWidthSpec = widthMeasureSpec
966- lastHeightSpec = heightMeasureSpec
967903 // Line count of the current text.
968904 textLineCount = lineCount
969905 }
@@ -1254,23 +1190,17 @@ class TextInputController internal constructor() {
12541190 private var savedText: AtomicReference <CharSequence ?>? = null
12551191 private var savedTextWithoutSpans: AtomicReference <CharSequence ?>? = null
12561192 private var measureSeqNumber: State <Int >? = null
1257- private var useSeqNumberForRemeasuringTextInput: Boolean = false
1258- private var createAndMeasureEditText: State <TextAndConstraints >? = null
12591193
12601194 internal fun bind (
12611195 editText : EditTextWithEventHandlers ,
12621196 savedText : AtomicReference <CharSequence ?>,
12631197 savedTextWithoutSpans : AtomicReference <CharSequence ?>? ,
12641198 measureSeqNumber : State <Int >? ,
1265- useSeqNumberForRemeasuringTextInput : Boolean ,
1266- createAndMeasureEditText : State <TextAndConstraints >? ,
12671199 ) {
12681200 this .editText = editText
12691201 this .savedText = savedText
12701202 this .savedTextWithoutSpans = savedTextWithoutSpans
12711203 this .measureSeqNumber = measureSeqNumber
1272- this .useSeqNumberForRemeasuringTextInput = useSeqNumberForRemeasuringTextInput
1273- this .createAndMeasureEditText = createAndMeasureEditText
12741204 }
12751205
12761206 internal fun unbind () {
@@ -1347,9 +1277,7 @@ class TextInputController internal constructor() {
13471277 .append(currentSavedText.subSequence(0 , startIndex))
13481278 .append(text)
13491279 .append(currentSavedText.subSequence(endIndex, currentSavedText.length)))
1350- if (useSeqNumberForRemeasuringTextInput) {
1351- savedText?.get()?.let { savedTextWithoutSpans?.set(it.toString()) }
1352- }
1280+ savedText?.get()?.let { savedTextWithoutSpans?.set(it.toString()) }
13531281
13541282 remeasureForUpdatedTextSync()
13551283 }
@@ -1400,9 +1328,7 @@ class TextInputController internal constructor() {
14001328 val view = editText
14011329 if (view == null ) {
14021330 savedText?.set(text)
1403- if (useSeqNumberForRemeasuringTextInput) {
1404- savedTextWithoutSpans?.set(text.toString())
1405- }
1331+ savedTextWithoutSpans?.set(text.toString())
14061332 return true
14071333 }
14081334
@@ -1415,11 +1341,7 @@ class TextInputController internal constructor() {
14151341 }
14161342
14171343 private fun remeasureForUpdatedTextSync () {
1418- if (useSeqNumberForRemeasuringTextInput) {
1419- createAndMeasureEditText?.updateSync(TextAndConstraints (savedText?.get().toString(), null ))
1420- } else {
1421- measureSeqNumber?.updateSync { it + 1 }
1422- }
1344+ measureSeqNumber?.updateSync { it + 1 }
14231345 }
14241346}
14251347
0 commit comments