Skip to content

Commit

Permalink
Improve handling of split wrapped contentDOM nodes on Android
Browse files Browse the repository at this point in the history
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
  • Loading branch information
marijnh committed Apr 8, 2022
1 parent dd90e74 commit 681157d
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/domchange.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,17 @@ export function readDOMChange(view, from, to, typeOver, addedNodes) {
view.lastKeyCode = null

let change = findDiff(compare.content, parse.doc.content, parse.from, preferredPos, preferredSide)
if ((browser.ios && view.lastIOSEnter > Date.now() - 225 || browser.android) &&
addedNodes.some(n => n.nodeName == "DIV" || n.nodeName == "P") &&
(!change || change.endA >= change.endB) &&
view.someProp("handleKeyDown", f => f(view, keyEvent(13, "Enter")))) {
view.lastIOSEnter = 0
return
}
if (!change) {
if (typeOver && sel instanceof TextSelection && !sel.empty && sel.$head.sameParent(sel.$anchor) &&
!view.composing && !(parse.sel && parse.sel.anchor != parse.sel.head)) {
change = {start: sel.from, endA: sel.to, endB: sel.to}
} else if ((browser.ios && view.lastIOSEnter > Date.now() - 225 || browser.android) &&
addedNodes.some(n => n.nodeName == "DIV" || n.nodeName == "P") &&
view.someProp("handleKeyDown", f => f(view, keyEvent(13, "Enter")))) {
view.lastIOSEnter = 0
return
} else {
if (parse.sel) {
let sel = resolveSelection(view, view.state.doc, parse.sel)
Expand Down

0 comments on commit 681157d

Please sign in to comment.