summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js
diff options
context:
space:
mode:
authorJulien Mougenot <jum@odoo.com>2019-08-14 13:34:23 +0000
committerAaron Bohy <aab@odoo.com>2019-09-18 06:11:03 +0000
commitc3ac1816658fcdc9d969a627f5376afdfefa96e4 (patch)
tree4a4e763dfe478bb70bf0c07c9f8d15e60a978c5c /addons/web/static/src/js
parente00121d50052c9ef7384173b844dd687a15933cd (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/js')
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js2
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js16
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