From c971496f510055ce57ae755e96149ec159253f93 Mon Sep 17 00:00:00 2001 From: ccd0 Date: Sun, 6 Aug 2017 22:06:57 -0700 Subject: [PATCH] Trim quoted text to be fully inside post. #1108 Also add multirange support because why not. --- src/Posting/QR.coffee | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Posting/QR.coffee b/src/Posting/QR.coffee index db921e410..23db4df9c 100644 --- a/src/Posting/QR.coffee +++ b/src/Posting/QR.coffee @@ -297,9 +297,20 @@ QR = return unless QR.postingIsEnabled sel = d.getSelection() post = Get.postFromNode @ + {root} = post.nodes + postRange = new Range() + postRange.selectNode root text = if post.board.ID is g.BOARD.ID then ">>#{post}\n" else ">>>/#{post.board}/#{post}\n" - if sel.toString().trim() and post is Get.postFromNode sel.anchorNode - range = sel.getRangeAt 0 + for i in [0...sel.rangeCount] + range = sel.getRangeAt i + # Trim range to be fully inside post + if range.compareBoundaryPoints(Range.START_TO_START, postRange) < 0 + range.setStartBefore root + if range.compareBoundaryPoints(Range.END_TO_END, postRange) > 0 + range.setEndAfter root + + continue unless range.toString().trim() + frag = range.cloneContents() ancestor = range.commonAncestorContainer # Quoting the insides of a spoiler/code tag.