# HG changeset patch
# User Houzefa Abbasbhay <houzefa.abba@xcg-consulting.fr>
# Date 1508421299 -7200
#      Thu Oct 19 15:54:59 2017 +0200
# Branch 8.0
# Node ID 713a8343046c1ec661d4c6fbdfb3b6977bc53692
# Parent  c755553a61c3f03ff3edcd642452ab449dc3d5e2
Diff of the desired result

diff --git a/diffs/view_list_editable.js.diff b/diffs/view_list_editable.js.diff
new file mode 100644
--- /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'),
+             });
+         },
+         /**