diff --git a/diffs/view_list_editable.js.diff b/diffs/view_list_editable.js.diff new file mode 100644 index 0000000000000000000000000000000000000000..713a8343046c1ec661d4c6fbdfb3b6977bc53692_ZGlmZnMvdmlld19saXN0X2VkaXRhYmxlLmpzLmRpZmY= --- /dev/null +++ b/diffs/view_list_editable.js.diff @@ -0,0 +1,48 @@ +This documents the desired result this module goes for by overriding involved functions. + +diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js +index bc18931..8100d74 100644 +--- a/addons/web/static/src/js/view_list_editable.js ++++ b/addons/web/static/src/js/view_list_editable.js +@@ -256,11 +256,28 @@ + }, options).then(function () { + $recordRow.addClass('oe_edition'); + self.resize_fields(); ++ // Local function that returns true if field is visible and editable ++ var is_focusable = function(field) { ++ return field && field.$el.is(':visible:not(.o_readonly)'); ++ }; + var focus_field = options && options.focus_field ? options.focus_field : undefined; +- if (!focus_field){ +- focus_field = _.find(self.editor.form.fields_order, function(field){ return fields[field] && fields[field].$el.is(':visible:has(input)'); }); ++ if (!is_focusable(fields[focus_field])) { ++ focus_field = _.find(self.editor.form.fields_order, function(field) { ++ return is_focusable(fields[field]); ++ }); ++ } ++ if (focus_field && fields[focus_field]) { ++ var field_node = fields[focus_field].$el; ++ var input_node = field_node.find('input'); ++ input_node.select(); ++ if (options && options.event_tag && options.event_tag.toLowerCase() == 'input' && ++ field_node.hasClass('oe_form_field_boolean')) ++ { ++ // Focusing a row by clicking on a check-box: Forward the click event. ++ input_node.click(); ++ field_node.click(); ++ } + } +- if (focus_field && fields[focus_field]) fields[focus_field].$el.find('input').select(); + return record.attributes; + }); + }).fail(function () { +@@ -810,7 +827,8 @@ + var record_id = $(event.currentTarget).data('id'); + return this.view.start_edition( + record_id ? this.records.get(record_id) : null, { +- focus_field: $(event.target).data('field') ++ event_tag: event.target.tagName, ++ focus_field: $(event.target).closest('[data-field]').data('field'), + }); + }, + /**