mirror of
https://gitlab.futo.org/keyboard/latinime.git
synced 2024-09-28 14:54:30 +01:00
[IL53] Fix a wrong test.
This test was intended only for cases without a selection, and as a safety net for cases where the app would pretend the cursor is at N but we can get P chars from the editor where P > N. When there is a selection, this is wrong. In the practice it works because these values are not used in this case, but it's still wrong. The case where P > N is arguable, but actually I see little reason to trust the getTextBeforeCursor() method more than the onUpdate selection method. Plus in the practice, I don't think we are aware of any app with this bug, and it's probably not a great idea to be too robust about this as it may encourage wrong values sent to onUpdateSelection. Change-Id: I42f2065d7aee668074e6b8e40b259da7e88e16e1
This commit is contained in:
parent
958e452025
commit
6fbe83be7a
@ -174,13 +174,15 @@ public final class RichInputConnection {
|
|||||||
}
|
}
|
||||||
final int lengthOfTextBeforeCursor = mCommittedTextBeforeComposingText.length();
|
final int lengthOfTextBeforeCursor = mCommittedTextBeforeComposingText.length();
|
||||||
if (lengthOfTextBeforeCursor > newSelStart
|
if (lengthOfTextBeforeCursor > newSelStart
|
||||||
|| (lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE
|
|| (newSelStart != lengthOfTextBeforeCursor
|
||||||
|
&& lengthOfTextBeforeCursor < Constants.EDITOR_CONTENTS_CACHE_SIZE
|
||||||
&& newSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
|
&& newSelStart < Constants.EDITOR_CONTENTS_CACHE_SIZE)) {
|
||||||
// newSelStart and newSelEnd may be lying -- when rotating the device (probably a
|
// newSelStart and newSelEnd may be lying -- when rotating the device (probably a
|
||||||
// framework bug). If we have less chars than we asked for, then we know how many chars
|
// framework bug). If the values don't agree and we have less chars than we asked
|
||||||
// we have, and if we got more than newSelStart says, then we know it was lying. In both
|
// for, then we know how many chars we have. If we got more than newSelStart says, then
|
||||||
// cases the length is more reliable. Note that we only have to check newSelStart (not
|
// we also know it was lying. In both cases the length is more reliable. Note that we
|
||||||
// newSelEnd) since if newSelEnd is wrong, the newSelStart will be wrong as well.
|
// only have to check newSelStart (not newSelEnd) since if newSelEnd is wrong, then
|
||||||
|
// newSelStart will be wrong as well.
|
||||||
mExpectedSelStart = lengthOfTextBeforeCursor;
|
mExpectedSelStart = lengthOfTextBeforeCursor;
|
||||||
mExpectedSelEnd = lengthOfTextBeforeCursor;
|
mExpectedSelEnd = lengthOfTextBeforeCursor;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user