[FIX] web_editor: setTag after triple click should not update next line

Before this commit:

Changing header style with triple click selection bring changes to the next
line, which it should not.

After this commit:

Now even after triple click selection the change stays with the selected part.

Task-2810134

closes odoo/odoo#95613

X-original-commit: dd64fc7730ef34d715cfb2146a7ef8a7ba98f34e
Signed-off-by: David Monjoie (dmo) <dmo@odoo.com>
This commit is contained in:
shsa-odoo
2022-07-07 22:20:52 +02:00
parent a01e8b5232
commit d6f7313a14
2 changed files with 3 additions and 3 deletions
@@ -579,7 +579,8 @@ export const editorCommands = {
// Change tags
setTag(editor, tagName) {
const restoreCursor = preserveCursor(editor.document);
const selectedBlocks = [...new Set(getTraversedNodes(editor.editable).map(closestBlock))];
const range = getDeepRange(editor.editable, { correctTripleClick: true });
const selectedBlocks = [...new Set(getTraversedNodes(editor.editable, range).map(closestBlock))];
for (const block of selectedBlocks) {
if (
['P', 'PRE', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'BLOCKQUOTE'].includes(
@@ -598,9 +598,8 @@ export function getCursorDirection(anchorNode, anchorOffset, focusNode, focusOff
* @param {Node} editable
* @returns {Node[]}
*/
export function getTraversedNodes(editable) {
export function getTraversedNodes(editable, range = getDeepRange(editable)) {
const document = editable.ownerDocument;
const range = getDeepRange(editable);
if (!range) return [];
const iterator = document.createNodeIterator(range.commonAncestorContainer);
let node;