Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

Commit 681157d

Browse files
committed
Improve handling of split wrapped contentDOM nodes on Android
FIX: Fix an issue where enter on Chrome Android could, in textblock nodes rendered with an inner content element, delete the text after the cursor. Closes ProseMirror/prosemirror#1252
1 parent dd90e74 commit 681157d

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

src/domchange.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -115,15 +115,17 @@ export function readDOMChange(view, from, to, typeOver, addedNodes) {
115115
view.lastKeyCode = null
116116

117117
let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide)
118+
if ((browser.ios && view.lastIOSEnter > Date.now() - 225 || browser.android) &&
119+
addedNodes.some(n => n.nodeName == "DIV" || n.nodeName == "P") &&
120+
(!change || change.endA >= change.endB) &&
121+
view.someProp("handleKeyDown", f => f(view, keyEvent(13, "Enter")))) {
122+
view.lastIOSEnter = 0
123+
return
124+
}
118125
if (!change) {
119126
if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&
120127
!view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {
121128
change = {start: sel.from, endA: sel.to, endB: sel.to}
122-
} else if ((browser.ios && view.lastIOSEnter > Date.now() - 225 || browser.android) &&
123-
addedNodes.some(n => n.nodeName == "DIV" || n.nodeName == "P") &&
124-
view.someProp("handleKeyDown", f => f(view, keyEvent(13, "Enter")))) {
125-
view.lastIOSEnter = 0
126-
return
127129
} else {
128130
if (parse.sel) {
129131
let sel = resolveSelection(view, view.state.doc, parse.sel)

0 commit comments

Comments
 (0)