diff options
| author | Julien Mougenot <jum@odoo.com> | 2019-08-14 13:34:23 +0000 |
|---|---|---|
| committer | Aaron Bohy <aab@odoo.com> | 2019-09-18 06:11:03 +0000 |
| commit | c3ac1816658fcdc9d969a627f5376afdfefa96e4 (patch) | |
| tree | 4a4e763dfe478bb70bf0c07c9f8d15e60a978c5c /addons/web/static/src | |
| parent | e00121d50052c9ef7384173b844dd687a15933cd (diff) | |
[FIX] web: no selected records after multi edition
Backport of 4b7ba864d0
After editing multiple record, we want don't want any
record selected. This commit ensures that.
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/views/list/list_controller.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/views/list/list_editable_renderer.js | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/addons/web/static/src/js/views/list/list_controller.js b/addons/web/static/src/js/views/list/list_controller.js index 5571cefdc02..c7cef09b1df 100644 --- a/addons/web/static/src/js/views/list/list_controller.js +++ b/addons/web/static/src/js/views/list/list_controller.js @@ -402,7 +402,7 @@ var ListController = BasicController.extend({ self._updateButtons('readonly'); var state = self.model.get(self.handle); self.renderer.updateState(state, {}); - resolve(); + resolve(Object.keys(changes)); }) .guardedCatch(rejectAndDiscard); }, diff --git a/addons/web/static/src/js/views/list/list_editable_renderer.js b/addons/web/static/src/js/views/list/list_editable_renderer.js index a2a3f945bbd..1564f9c2774 100644 --- a/addons/web/static/src/js/views/list/list_editable_renderer.js +++ b/addons/web/static/src/js/views/list/list_editable_renderer.js @@ -439,17 +439,20 @@ ListRenderer.include({ var recordWidgets = this.allFieldWidgets[recordID]; toggleWidgets(true); - var prom = new Promise(function (resolve, reject) { + return new Promise(function (resolve, reject) { self.trigger_up('save_line', { recordID: recordID, onSuccess: resolve, onFailure: reject, }); - }); - prom.guardedCatch(function() { + }).then(function (changedFields) { + // If any field has changed and if the list is in multiple edition, + // we send a truthy boolean to _selectRow to tell it not to select + // the following record. + return changedFields && changedFields.length && self.inMultipleRecordEdition(recordID); + }).guardedCatch(function () { toggleWidgets(false); }); - return prom; function toggleWidgets(disabled) { _.each(recordWidgets, function (widget) { @@ -1058,7 +1061,10 @@ ListRenderer.include({ var recordId = this._getRecordID(rowIndex); // To select a row, the currently selected one must be unselected first var self = this; - return this.unselectRow().then(function () { + return this.unselectRow().then(function (noSelectNext) { + if (noSelectNext) { + return Promise.resolve(); + } if (!recordId) { // The row to selected doesn't exist anymore (probably because // an onchange triggered when unselecting the previous one |
