diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index 0e8537856c6..311f98596fc 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -2218,6 +2218,19 @@ var FieldMany2Many = FieldX2Many.extend({ renderingContext.noCreate = !this.canLink; return renderingContext; }, + /** + * @private + * @override + * @param {Object} extraInfo + * @param {string} [extraInfo.type] + */ + _quickEdit: function (extraInfo) { + if (extraInfo.type === 'add') { + this.onAddRecordOpenDialog(); + } else { + this._super(...arguments); + } + }, //-------------------------------------------------------------------------- // Handlers @@ -2234,7 +2247,16 @@ var FieldMany2Many = FieldX2Many.extend({ */ _onAddRecord: function (ev) { ev.stopPropagation(); - this.onAddRecordOpenDialog(); + + if (this._canQuickEdit && this.isReadonly) { + this.trigger_up('quick_edit', { + fieldName: this.name, + target: this.el, + extraInfo: { type: 'add' }, + }); + } else { + this.onAddRecordOpenDialog(); + } }, /** diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 588b762e287..cc611fefc39 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -10777,6 +10777,50 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('Quick Edition: Many2Many', async function (assert) { + assert.expect(6); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: ` +
`, + archs: { + 'partner_type,false,list': '