From 0cbc188a71b456486c60385da97ae2b445b35a96 Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Wed, 23 Oct 2019 13:48:22 +0000 Subject: [PATCH] [FIX] web_editor: prevent focus change on recording undos Part of https://github.com/odoo/odoo/pull/38959 task-2066614 --- addons/web_editor/static/src/js/editor/rte.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/web_editor/static/src/js/editor/rte.js b/addons/web_editor/static/src/js/editor/rte.js index 5c3fad24f64..7505e570626 100644 --- a/addons/web_editor/static/src/js/editor/rte.js +++ b/addons/web_editor/static/src/js/editor/rte.js @@ -423,6 +423,10 @@ var RTEWidget = Widget.extend({ * @param {boolean} internal_history */ historyRecordUndo: function ($target, event, internal_history) { + const initialActiveElement = document.activeElement; + const initialSelectionStart = initialActiveElement && initialActiveElement.selectionStart; + const initialSelectionEnd = initialActiveElement && initialActiveElement.selectionEnd; + $target = $($target); var rng = range.create(); var $editable = $(rng && rng.sc).closest('.o_editable'); @@ -442,6 +446,12 @@ var RTEWidget = Widget.extend({ console.log('error', e); } history.recordUndo($editable, event, internal_history); + + if (initialActiveElement && initialActiveElement !== document.activeElement) { + initialActiveElement.focus(); + initialActiveElement.selectionStart = initialSelectionStart; + initialActiveElement.selectionEnd = initialSelectionEnd; + } }, /** * Searches all the dirty element on the page and saves them one by one. If