Skip to content

Commit

Permalink
Revert "Add logic to address Gboard's unusual invocation of TextWatch…
Browse files Browse the repository at this point in the history
…er methods"

This reverts commit 5581743.
  • Loading branch information
mkevins committed Mar 31, 2021
1 parent 5581743 commit 5da76c7
Showing 1 changed file with 4 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@ class EnterPressedWatcher(aztecText: AztecText, var enterDeleter: EnterDeleter)
private var selEnd: Int = 0
var done = false

private var gboardReplacement: CharSequence? = null


override fun beforeTextChanged(text: CharSequence, start: Int, count: Int, after: Int) {
val aztecText = aztecTextRef.get()
if (aztecText?.getAztecKeyListener() != null && !aztecText.isTextChangedListenerDisabled()) {
Expand All @@ -35,13 +32,6 @@ class EnterPressedWatcher(aztecText: AztecText, var enterDeleter: EnterDeleter)
this.start = start
this.selStart = aztecText.selectionStart
this.selEnd = aztecText.selectionEnd

if (selStart == selEnd && 0 < count && count < after) {
// possible gboard replacement detected
gboardReplacement = text.subSequence(start, start + count)
} else {
gboardReplacement = null
}
}
}

Expand All @@ -50,25 +40,14 @@ class EnterPressedWatcher(aztecText: AztecText, var enterDeleter: EnterDeleter)
val aztecKeyListener = aztecText?.getAztecKeyListener()
if (aztecText != null && !aztecText.isTextChangedListenerDisabled() && aztecKeyListener != null) {
val newTextCopy = SpannableStringBuilder(text)

var gboardOffset = this.start
// If gboard replacement is happening, we offset the start position by the length
// of the gboard replacement
if (gboardReplacement != null) {
val gboardRestored = newTextCopy.subSequence(start, start + before)
if (gboardRestored.toString() == gboardReplacement.toString()) {
gboardOffset += gboardRestored.length
}
}

// if new text length is longer than original text by 1
if (textBefore?.length == newTextCopy.length - 1) {
// now check that the inserted character is actually a NEWLINE
if (newTextCopy[gboardOffset] == Constants.NEWLINE) {
if (newTextCopy[this.start] == Constants.NEWLINE) {
done = false
aztecText.editableText.setSpan(EnterPressedUnderway(), 0, 0, Spanned.SPAN_USER)
aztecKeyListener.onEnterKey(
newTextCopy.replace(gboardOffset, gboardOffset + 1, ""),
newTextCopy.replace(this.start, this.start + 1, ""),
true,
selStart,
selEnd
Expand All @@ -82,12 +61,9 @@ class EnterPressedWatcher(aztecText: AztecText, var enterDeleter: EnterDeleter)
aztecTextRef.get()?.editableText?.getSpans(0, 0, EnterPressedUnderway::class.java)?.forEach {
if (!done) {
done = true
if (enterDeleter.shouldDeleteEnter()) {
var gboardOffset = start
gboardReplacement?.let { replacement -> gboardOffset += replacement.length }
text.replace(gboardOffset, gboardOffset + 1, "")
if (enterDeleter.shouldDeleteEnter())
text.replace(start, start + 1, "")
}
}
aztecTextRef.get()?.editableText?.removeSpan(it)
}
}
Expand Down

0 comments on commit 5da76c7

Please sign in to comment.