diff --git a/addons/web/static/src/js/chrome/action_manager.js b/addons/web/static/src/js/chrome/action_manager.js index aee954342fa..bdcc93e022a 100644 --- a/addons/web/static/src/js/chrome/action_manager.js +++ b/addons/web/static/src/js/chrome/action_manager.js @@ -393,7 +393,7 @@ var ActionManager = Widget.extend({ return dialog.open().opened(function () { self.currentDialogController = controller; - + widget.setParent(dialog); dom.append(dialog.$el, widget.$el, { in_DOM: true, callbacks: [{widget: dialog}, {widget: controller.widget}], diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js index 02ba1d2472d..971c5effb98 100644 --- a/addons/web/static/tests/chrome/action_manager_tests.js +++ b/addons/web/static/tests/chrome/action_manager_tests.js @@ -3852,6 +3852,65 @@ QUnit.module('ActionManager', { actionManager.destroy(); }); + QUnit.test("Button with `close` attribute closes dialog", async function (assert) { + assert.expect(2); + const actions = [ + { + id: 4, + name: "Partners Action 4", + res_model: "partner", + type: "ir.actions.act_window", + views: [[false, "form"]], + }, + { + id: 5, + name: "Create a Partner", + res_model: "partner", + target: "new", + type: "ir.actions.act_window", + views: [["view_ref", "form"]], + }, + ]; + + const actionManager = await createActionManager({ + actions, + archs: { + "partner,false,form": ` +
+ `, + "partner,view_ref,form": ` + + `, + "partner,false,search": "