diff --git a/addons/web/static/src/legacy/js/fields/basic_fields.js b/addons/web/static/src/legacy/js/fields/basic_fields.js index 744244d8626..9e0b87c752f 100644 --- a/addons/web/static/src/legacy/js/fields/basic_fields.js +++ b/addons/web/static/src/legacy/js/fields/basic_fields.js @@ -3715,7 +3715,7 @@ var FieldDomain = AbstractField.extend({ this.domainSelector.destroy(); this.domainSelector = null; } - if (ev.target !== this) { + if (!ev || ev.target !== this) { this.debugEdition = false; } }, diff --git a/addons/web/static/tests/legacy/views/form_tests.js b/addons/web/static/tests/legacy/views/form_tests.js index 39c6ab26a44..68c9bb299fb 100644 --- a/addons/web/static/tests/legacy/views/form_tests.js +++ b/addons/web/static/tests/legacy/views/form_tests.js @@ -4449,6 +4449,43 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('form with domain widget: opening a many2many form and save should not crash', async function (assert) { + assert.expect(0); + + // We just test that there is no crash in this situation + this.data.partner.records[0].timmy = [12]; + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: + `
`, + res_id: 1, + }); + + // switch to edit mode + await testUtils.form.clickEdit(form); + + // open a form view and save many2many record + await testUtils.dom.click(form.$('.o_data_row .o_data_cell:first')); + await testUtils.dom.click($('.modal-dialog footer button:first-child')); + + form.destroy(); + }); + QUnit.test('display_name not sent for onchanges if not in view', async function (assert) { assert.expect(7);