diff options
| author | Aaron Bohy <aab@odoo.com> | 2017-09-29 08:50:28 +0200 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2017-09-29 16:02:36 +0200 |
| commit | 36b4d78a2678806b25aaa5650b64496f9da9d205 (patch) | |
| tree | e5325edb2d1a26530f587325e249d2b76136951a /addons/web/static/src/js/fields | |
| parent | f9dc8cf76dc8cd9bd091c7e0c4bdf368a9e47b23 (diff) | |
[FIX] web,mail: reset focus after onchange on x2many
Rev. 2728fe1 introduced an attempt of restoring the focus on the
currently focused field in an x2many list after an onchange
returned, and the list has been updated. However, it was often
wrong (e.g. leaving a field by pressing tab/shift+tab, clicking on
another field...) and reset the focus on an unexpected field.
In addition to fixing this issue, this rev. also unifies the helper
functions to get and set the cursor positions in an input or
textarea, as they were duplicated between mail and web.
Diffstat (limited to 'addons/web/static/src/js/fields')
| -rw-r--r-- | addons/web/static/src/js/fields/relational_fields.js | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index f518c3df354..2851f31c673 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -20,7 +20,6 @@ var ControlPanel = require('web.ControlPanel'); var dialogs = require('web.view_dialogs'); var core = require('web.core'); var data = require('web.data'); -var dom = require('web.dom'); var Dialog = require('web.Dialog'); var KanbanRenderer = require('web.KanbanRenderer'); var ListRenderer = require('web.ListRenderer'); @@ -905,33 +904,11 @@ var FieldX2Many = AbstractField.extend({ this.lastInitialEvent = undefined; if (Object.keys(changes).length) { this.lastInitialEvent = ev; - // store the cursor position to restore it once potential onchanges have been applied - var self = this; - var editableID = this.renderer.getEditableRecordID(); - var datapoint = _.find(this.value.data, {id: editableID}); - - var ref = datapoint && datapoint.ref; - var cursor = ref && dom.getCursor(ev.target.getFocusableElement()); - var fieldName = ev.target.name; - - var def = this._setValue({ + this._setValue({ operation: 'UPDATE', id: ev.data.dataPointID, data: changes, }); - - if (ref) { - def.then(function () { - var nextEditableRecordID = self.renderer.getEditableRecordID(); - if (nextEditableRecordID && editableID !== nextEditableRecordID) { - return; - } - var datapoint = _.find(self.value.data, {ref: ref}); - if (datapoint) { - self.renderer.focusField(datapoint.id, fieldName, cursor && cursor.offset); - } - }); - } } }, /** |
