Explorar o código

improve handling of selected content (fix #1417)

Gildas hai 1 ano
pai
achega
f7a5a7fda6
Modificáronse 1 ficheiros con 13 adicións e 1 borrados
  1. 13 1
      src/ui/content/content-ui.js

+ 13 - 1
src/ui/content/content-ui.js

@@ -222,7 +222,19 @@ function markSelectedContent() {
 				}
 			}
 			if (selectionFound && treeWalker.currentNode == range.endContainer && treeWalker.currentNode.querySelectorAll) {
-				treeWalker.currentNode.querySelectorAll("*").forEach(descendantElement => markSelectedNode(descendantElement));
+				for (
+					let offset = range.startContainer === range.endContainer ? range.startOffset : 0;
+					offset < range.endOffset;
+					offset++
+				) {
+					const node = range.endContainer.childNodes[offset];
+					if (node) {
+						markSelectedNode(node);
+						if (node.querySelectorAll) {
+							node.querySelectorAll("*").forEach(markSelectedNode);
+						}
+					}
+				}
 			}
 		}
 	}