Skip to content

Commit eac6e2e

Browse files
authored
Initial fix for text insertion bugs in Android 5.1 (facebookarchive#1033)
Related to issue facebookarchive#1011 There is a bug in Android 5.1 (not 5.0 oddly enough) that makes text entry nearly unusable. It's documented in detail here - facebookarchive#1011 Logging everything shows that; - when we have a block with text and spaces, and start deleting the characters one by one, there is an 'onInput' for each deletion that updates the text. - when you delete the very last character, the 'anchorNode' of the domSelection has a type that is not a text node. So we skip updating at all, and that means the last character doesn't actually get properly deleted from editorState. - Then the next time something fully updates the editorState, that last character shows up again. The root issue is that Android 5.1, when we tested it, was in "composition" mode and the current handlers are not really built to handle text deletion properly in composition mode. We're looking forward to finding a more complete solution to the root cause - for now this change improves the usability on mobile and doesn't break anything.
1 parent 543831d commit eac6e2e

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

src/component/handlers/edit/editOnInput.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,10 @@ function editOnInput(editor: DraftEditor): void {
4747
var domSelection = global.getSelection();
4848

4949
var {anchorNode, isCollapsed} = domSelection;
50-
if (anchorNode.nodeType !== Node.TEXT_NODE) {
50+
51+
const isNotTextOrElementNode = anchorNode.nodeType !== Node.TEXT_NODE
52+
&& anchorNode.nodeType !== Node.ELEMENT_NODE;
53+
if (isNotTextOrElementNode) {
5154
return;
5255
}
5356

0 commit comments

Comments
 (0)