From 74562c8a4180f30cd9b3285629cb7bc8be7232ed Mon Sep 17 00:00:00 2001 From: FrancoisGe Date: Fri, 5 Aug 2022 09:32:38 +0000 Subject: [PATCH] [FIX] web: press a key when focusing column header Before this commit, if the header of a column (X2many/ListView) has the focus, a record is being edited and a key is pressed, then a crash is displayed. closes odoo/odoo#97559 Signed-off-by: Aaron Bohy (aab) --- .../static/src/views/list/list_renderer.js | 2 +- .../views/fields/one2many_field_tests.js | 27 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/views/list/list_renderer.js b/addons/web/static/src/views/list/list_renderer.js index d08a2cc4a56..72d4cc81916 100644 --- a/addons/web/static/src/views/list/list_renderer.js +++ b/addons/web/static/src/views/list/list_renderer.js @@ -1131,7 +1131,7 @@ export class ListRenderer extends Component { onCellKeydownEditMode(hotkey, cell, group, record) { const { activeActions, cycleOnTab, list } = this.props; const row = cell.parentElement; - const applyMultiEditBehavior = record.selected && list.model.multiEdit; + const applyMultiEditBehavior = record && record.selected && list.model.multiEdit; if ( applyMultiEditBehavior && diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 404ed1c3e35..300d051593f 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -12118,6 +12118,33 @@ QUnit.module("Fields", (hooks) => { } ); + QUnit.test( + "be able to press a key on the keyboard when focusing a column header without crashing", + async function (assert) { + assert.expect(0); + + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + +
`, + resId: 1, + }); + await clickEdit(target); + await click(target.querySelector(".o_data_row .o_data_cell")); + target.querySelector(".o_list_renderer .o_column_sortable").focus(); + triggerHotkey("a"); + await nextTick(); + } + ); + QUnit.test("Check onchange with two consecutive one2one", async function (assert) { serverData.models.product.fields.product_partner_ids = { string: "User",