From c9d9b4cc2c89daf5b5461ea35d6d0fbb253c74ea Mon Sep 17 00:00:00 2001 From: Antoine Guenet Date: Tue, 15 Dec 2020 13:59:05 +0000 Subject: [PATCH] [FIX] web_editor: prevent deadlock when removing child snippet of popup closes odoo/odoo#63410 X-original-commit: b087f6a0c7b708ba45ad465310ac8064d3732591 Signed-off-by: David Monjoie (dmo) --- .../web_editor/static/src/js/editor/snippets.editor.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/web_editor/static/src/js/editor/snippets.editor.js b/addons/web_editor/static/src/js/editor/snippets.editor.js index c850e39c7d6..c21a07e7bcc 100644 --- a/addons/web_editor/static/src/js/editor/snippets.editor.js +++ b/addons/web_editor/static/src/js/editor/snippets.editor.js @@ -349,6 +349,7 @@ var SnippetEditor = Widget.extend({ this.toggleOverlay(false); this.toggleOptions(false); + let removableParent; const removeSnippet = async (context) => { await new Promise(resolve => { this.trigger_up('call_for_each_child_snippet', { @@ -386,9 +387,7 @@ var SnippetEditor = Widget.extend({ editor = $parent.data('snippet-editor'); } if (isEmptyAndRemovable($parent, editor)) { - await new Promise((resolve)=> { - setTimeout(() => editor.removeSnippet().then(resolve)); - }); + removableParent = editor; } } @@ -410,6 +409,11 @@ var SnippetEditor = Widget.extend({ } }; await this.wysiwyg.withDomMutations($('#wrapwrap'), removeSnippet); + if (removableParent) { + await new Promise((resolve)=> { + setTimeout(() => removableParent.removeSnippet().then(resolve)); + }); + } }, /** * Displays/Hides the editor overlay.