From 7d7ff165ced305bc269b24aa0ce8664272d86fa6 Mon Sep 17 00:00:00 2001 From: siikamiika Date: Tue, 5 May 2020 00:13:43 +0300 Subject: Extract textSource text inside TextScanner (#500) * extract text inside TextScanner * clone textSource before text extraction --- ext/mixed/js/text-scanner.js | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) (limited to 'ext/mixed') diff --git a/ext/mixed/js/text-scanner.js b/ext/mixed/js/text-scanner.js index d74a04f8..9dcf6009 100644 --- a/ext/mixed/js/text-scanner.js +++ b/ext/mixed/js/text-scanner.js @@ -318,21 +318,24 @@ class TextScanner extends EventDispatcher { } } - setTextSourceScanLength(textSource, length) { - textSource.setEndOffset(length); - if (this.ignoreNodes === null || !textSource.range) { - return; - } + getTextSourceContent(textSource, length) { + const clonedTextSource = textSource.clone(); + + clonedTextSource.setEndOffset(length); - length = textSource.text().length; - while (textSource.range && length > 0) { - const nodes = TextSourceRange.getNodesInRange(textSource.range); - if (!TextSourceRange.anyNodeMatchesSelector(nodes, this.ignoreNodes)) { - break; + if (this.ignoreNodes !== null && clonedTextSource.range) { + length = clonedTextSource.text().length; + while (clonedTextSource.range && length > 0) { + const nodes = TextSourceRange.getNodesInRange(clonedTextSource.range); + if (!TextSourceRange.anyNodeMatchesSelector(nodes, this.ignoreNodes)) { + break; + } + --length; + clonedTextSource.setEndOffset(length); } - --length; - textSource.setEndOffset(length); } + + return clonedTextSource.text(); } clearSelection(passive) { -- cgit v1.2.3