diff --git a/addons/web/static/src/js/views/form/form_renderer.js b/addons/web/static/src/js/views/form/form_renderer.js index 46adbf5383d..b0da8c5aaf5 100644 --- a/addons/web/static/src/js/views/form/form_renderer.js +++ b/addons/web/static/src/js/views/form/form_renderer.js @@ -1154,10 +1154,8 @@ var FormRenderer = BasicRenderer.extend({ const entry = Object.entries(this.idsForLabels) .find(x => x[1] === idForLabel); if (entry) { - const fieldWidget = this.allFieldWidgets[this.state.id] - .find(field => field[symbol] === entry[0]); this.trigger_up('quick_edit', { - fieldName: fieldWidget.name, + fieldName: this.fieldIdsToNames[entry[0]], target: ev.currentTarget, extraInfo: {}, }); diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index 852ef11dfc7..c521101153a 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -10319,6 +10319,45 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('Quick Edition: Label click (duplicated field)', async function (assert) { + assert.expect(8); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: ` +
`, + res_id: 1, + }); + + assert.containsOnce(form, '.o_form_view.o_form_readonly'); + assert.containsN(form, '.o_form_label', 2); + assert.containsOnce(form, '.o_invisible_modifier .o_form_label'); + + await testUtils.dom.click(form.$('.o_form_label')[1]); + + assert.containsOnce(form, '.o_form_view.o_form_editable'); + assert.containsN(form, '.o_form_label', 2); + assert.containsOnce(form, '.o_invisible_modifier .o_form_label'); + assert.containsOnce(form, 'input.o_field_widget[name="foo"]'); + assert.strictEqual(document.activeElement, form.$('input.o_field_widget[name="foo"]')[0]); + + form.destroy(); + }); + QUnit.test('Quick Edition: Checkbox click', async function (assert) { assert.expect(11);