Просмотр исходного кода

pressing shift + click/space only affects the last selected element (see #516)

Gildas 5 лет назад
Родитель
Сommit
a2a77387d3
1 измененных файлов с 6 добавлено и 8 удалено
  1. 6 8
      extension/ui/content/content-ui-editor-web.js

+ 6 - 8
extension/ui/content/content-ui-editor-web.js

@@ -1335,14 +1335,11 @@ table {
 
 
 	function validateCutElement(invert) {
 	function validateCutElement(invert) {
 		const selectedElement = cuttingPath[cuttingPathIndex];
 		const selectedElement = cuttingPath[cuttingPathIndex];
-		const elementsRemoved = [selectedElement].concat(...document.querySelectorAll("." + CUT_SELECTED_CLASS));
-		const elementsKept = [selectedElement].concat(...document.querySelectorAll("." + CUT_OUTER_SELECTED_CLASS));
-		if ((cuttingMode && (!invert || elementsRemoved.length > 1)) || (cuttingOuterMode && invert && elementsKept.length == 1)) {
+		if ((cuttingMode && !invert) || (cuttingOuterMode && invert)) {
 			if (document.documentElement != selectedElement && selectedElement.tagName.toLowerCase() != NOTE_TAGNAME) {
 			if (document.documentElement != selectedElement && selectedElement.tagName.toLowerCase() != NOTE_TAGNAME) {
-				elementsRemoved.forEach(element => {
-					element.classList.add(REMOVED_CONTENT_CLASS);
-					element.classList.remove(CUT_SELECTED_CLASS);
-				});
+				const elementsRemoved = [selectedElement].concat(...document.querySelectorAll("." + CUT_SELECTED_CLASS));
+				elementsRemoved.forEach(element => element.classList.add(REMOVED_CONTENT_CLASS));
+				resetSelectedElements();
 				removedElements[removedElementIndex] = elementsRemoved;
 				removedElements[removedElementIndex] = elementsRemoved;
 				removedElementIndex++;
 				removedElementIndex++;
 				removedElements.length = removedElementIndex;
 				removedElements.length = removedElementIndex;
@@ -1352,6 +1349,7 @@ table {
 			if (document.documentElement != selectedElement && selectedElement.tagName.toLowerCase() != NOTE_TAGNAME) {
 			if (document.documentElement != selectedElement && selectedElement.tagName.toLowerCase() != NOTE_TAGNAME) {
 				const elements = [];
 				const elements = [];
 				const searchSelector = "*:not(style):not(meta):not(." + REMOVED_CONTENT_CLASS + ")";
 				const searchSelector = "*:not(style):not(meta):not(." + REMOVED_CONTENT_CLASS + ")";
+				const elementsKept = [selectedElement].concat(...document.querySelectorAll("." + CUT_OUTER_SELECTED_CLASS));
 				document.body.querySelectorAll(searchSelector).forEach(element => {
 				document.body.querySelectorAll(searchSelector).forEach(element => {
 					let removed = true;
 					let removed = true;
 					elementsKept.forEach(elementKept => removed = removed && (elementKept != element && !isAncestor(elementKept, element) && !isAncestor(element, elementKept)));
 					elementsKept.forEach(elementKept => removed = removed && (elementKept != element && !isAncestor(elementKept, element) && !isAncestor(element, elementKept)));
@@ -1373,7 +1371,7 @@ table {
 						}
 						}
 					});
 					});
 				});
 				});
-				document.querySelectorAll("." + CUT_OUTER_SELECTED_CLASS).forEach(element => element.classList.remove(CUT_OUTER_SELECTED_CLASS));
+				resetSelectedElements();
 				elements.forEach(element => element.classList.add(REMOVED_CONTENT_CLASS));
 				elements.forEach(element => element.classList.add(REMOVED_CONTENT_CLASS));
 				removedElements[removedElementIndex] = elements;
 				removedElements[removedElementIndex] = elements;
 				removedElementIndex++;
 				removedElementIndex++;