From 29e65ff0526bad593c84b254e7f72663f4bc6f16 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 3 Jul 2012 11:10:58 +0200 Subject: [PATCH] [FIX] move 'behavior on save' to handler for [Return] key as it's the only situation where we want to skip to next record bzr revid: xmo@openerp.com-20120703091058-b7wdebu8ak6gssyb --- .../web/static/src/js/view_list_editable.js | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/addons/web/static/src/js/view_list_editable.js b/addons/web/static/src/js/view_list_editable.js index 35edc19c9f4..3e4d0d777e5 100644 --- a/addons/web/static/src/js/view_list_editable.js +++ b/addons/web/static/src/js/view_list_editable.js @@ -89,7 +89,18 @@ openerp.web.list_editable = function (instance) { self.editor.$element.on('keyup', function (e) { switch (e.which) { case KEY_RETURN: - self.saveEdition(); + self.saveEdition().then(function (saveInfo) { + if (saveInfo.created) { + self.startEdition(); + return; + } + var next_index = self.records.indexOf(saveInfo.record) + 1; + if (next_index === self.records.length) { + next_index = 0; + } + + self.startEdition(self.records.at(next_index)); + }); break; case KEY_ESCAPE: self.cancelEdition(); @@ -176,29 +187,23 @@ openerp.web.list_editable = function (instance) { form: this.editor.form, cancel: false }, this.editor.save).pipe(function (attrs) { + var created = false; var record = self.records.get(attrs.id); if (!record) { // new record + created = true; record = self.records.find(function (r) { return !r.get('id'); }).set('id', attrs.id); - - setTimeout(function () { - self.startEdition(); - }, 0); - } else { - var next_index = self.records.indexOf(record) + 1; - if (next_index === self.records.length) { - next_index = 0; - } - - setTimeout(function () { - self.startEdition(self.records.at(next_index)); - }, 0); } return $.when( self.handleOnWrite(record), - self.reload_record(record)); + self.reload_record(record)).pipe(function () { + return { + created: created, + record: record + } + }); }); }, /**