diff --git a/addons/web/static/src/js/views/form/form_controller.js b/addons/web/static/src/js/views/form/form_controller.js index 05745eb507f..4373afb48ea 100644 --- a/addons/web/static/src/js/views/form/form_controller.js +++ b/addons/web/static/src/js/views/form/form_controller.js @@ -141,7 +141,11 @@ var FormController = BasicController.extend({ * @param {jQuery} [$node] */ renderButtons: function ($node) { - var $footer = this.footerToButtons ? this.renderer.$el && this.renderer.$('footer') : null; + var $footer = this.footerToButtons + ? this.renderer.$el && this.renderer.$('footer').filter(function () { + return !this.closest('.oe_form_field'); + }) + : null; var mustRenderFooterButtons = $footer && $footer.length; if ((this.defaultButtons && !this.$buttons) || mustRenderFooterButtons) { this.$buttons = $('
'); @@ -280,7 +284,9 @@ var FormController = BasicController.extend({ return; } if (this.footerToButtons) { - var $footer = this.renderer.$el && this.renderer.$('footer'); + var $footer = this.renderer.$el && this.renderer.$('footer').filter(function () { + return !this.closest('.oe_form_field'); + }); if ($footer && $footer.length) { this.$buttons.empty().append($footer); } diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index fc6110ae5bd..336798347f7 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -6,6 +6,7 @@ var BasicModel = require('web.BasicModel'); var concurrency = require('web.concurrency'); var core = require('web.core'); var fieldRegistry = require('web.field_registry'); +var basicFields = require('web.basic_fields'); const fieldRegistryOwl = require('web.field_registry_owl'); var FormView = require('web.FormView'); var mixins = require('web.mixins'); @@ -2254,6 +2255,40 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test("modal should not use the widget footer elements", async function (assert) { + assert.expect(2); + + var MyWidget = basicFields.FieldChar.extend({ + _renderEdit: function () { + var $el = $(`