From 75855a725ba03ac705e559dac8ffea93bccf25e6 Mon Sep 17 00:00:00 2001 From: Marijn Haverbeke Date: Thu, 14 Dec 2023 15:54:46 +0100 Subject: [PATCH] Only apply select-all iOS kludge when the viewport doesn't cover the doc --- src/domchange.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/domchange.ts b/src/domchange.ts index c47e0a7..930d62c 100644 --- a/src/domchange.ts +++ b/src/domchange.ts @@ -38,8 +38,10 @@ export class DOMChange { ? view.state.selection.main.anchor : view.docView.posFromDOM(domSel.anchorNode!, domSel.anchorOffset) // iOS will refuse to select the block gaps when doing select-all - if (browser.ios && view.state.selection.main.empty && head != anchor) { - let offFrom = view.viewport.from - Math.min(head, anchor), offTo = view.viewport.to - Math.max(head, anchor) + let vp = view.viewport + if (browser.ios && view.state.selection.main.empty && head != anchor && + (vp.from > 0 || vp.to < view.state.doc.length)) { + let offFrom = vp.from - Math.min(head, anchor), offTo = vp.to - Math.max(head, anchor) if ((offFrom == 0 || offFrom == 1) && (offTo == 0 || offTo == -1)) { head = 0 anchor = view.state.doc.length