From d6f7313a141c9428234a6da42846ffcc1cdcea55 Mon Sep 17 00:00:00 2001 From: shsa-odoo Date: Thu, 7 Jul 2022 07:03:42 +0000 Subject: [PATCH] [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) --- .../static/src/js/editor/odoo-editor/src/commands/commands.js | 3 ++- .../static/src/js/editor/odoo-editor/src/utils/utils.js | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_editor/static/src/js/editor/odoo-editor/src/commands/commands.js b/addons/web_editor/static/src/js/editor/odoo-editor/src/commands/commands.js index 379dd0cd613..468fc4c2f56 100644 --- a/addons/web_editor/static/src/js/editor/odoo-editor/src/commands/commands.js +++ b/addons/web_editor/static/src/js/editor/odoo-editor/src/commands/commands.js @@ -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( diff --git a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js index 9b9c754eb56..1a1a2207d2a 100644 --- a/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js +++ b/addons/web_editor/static/src/js/editor/odoo-editor/src/utils/utils.js @@ -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;