summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static/src')
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js6
-rw-r--r--addons/web/static/src/js/views/list/list_controller.js6
-rw-r--r--addons/web/static/src/js/views/list/list_editable_renderer.js7
3 files changed, 16 insertions, 3 deletions
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index e05a53194c3..67218e5decd 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -1063,7 +1063,11 @@ var FieldOne2Many = FieldX2Many.extend({
ev.stopPropagation();
if (this.editable) {
- if (!this.creatingRecord) {
+ if (!this.activeActions.create) {
+ if (ev.data.onFail) {
+ ev.data.onFail();
+ }
+ } else if (!this.creatingRecord) {
this.creatingRecord = true;
this._setValue({
operation: 'CREATE',
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 3b74f140e4d..33637e53f52 100644
--- a/addons/web/static/src/js/views/list/list_controller.js
+++ b/addons/web/static/src/js/views/list/list_controller.js
@@ -313,7 +313,11 @@ var ListController = BasicController.extend({
*/
_onAddRecord: function (event) {
event.stopPropagation();
- this._addRecord();
+ if (this.activeActions.create) {
+ this._addRecord();
+ } else if (event.data.onFail) {
+ event.data.onFail();
+ }
},
/**
* Handles a click on a button by performing its action.
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 3cd93bb6e8b..c5f65ecc6e2 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
@@ -341,7 +341,12 @@ ListRenderer.include({
if (this.currentRow < this.state.data.length - 1) {
this._selectCell(this.currentRow + 1, 0);
} else {
- this.unselectRow().then(this.trigger_up.bind(this, 'add_record'));
+ var self = this;
+ this.unselectRow().then(function () {
+ self.trigger_up('add_record', {
+ onFail: self._selectCell.bind(self, 0, 0, {}),
+ });
+ });
}
},
/**