summaryrefslogtreecommitdiff
path: root/addons/web/static/src/js/fields
diff options
context:
space:
mode:
authorGéry Debongnie <ged@odoo.com>2017-07-06 09:34:25 +0200
committerMartin Geubelle <mge@odoo.com>2017-07-06 15:04:04 +0200
commit56dae80994ceb27a80714bed78f4e17450151831 (patch)
tree514a351b1b0b969ebc60b656947982afff0cd7e5 /addons/web/static/src/js/fields
parent7dc731db8308febb6426ee4c6d61b2a80d40c021 (diff)
[FIX] web: prevent crash with invisible x2m and onchanges
When an invisible x2many field is modified by an onchange, we had a crash because the reset function did not return a deferred in that case. This happens because the signature of _render in AbstractField allow for an undefined return value, but the reset method should return a deferred. This was an issue for example in stock: editing the pack_operation_product_ids one2many field in a stock.picking could trigger an onchange on another invisible one2many (with no inline views).
Diffstat (limited to 'addons/web/static/src/js/fields')
-rw-r--r--addons/web/static/src/js/fields/abstract_field.js2
-rw-r--r--addons/web/static/src/js/fields/relational_fields.js2
2 files changed, 2 insertions, 2 deletions
diff --git a/addons/web/static/src/js/fields/abstract_field.js b/addons/web/static/src/js/fields/abstract_field.js
index 52e0aef77e4..4ae4eec9c05 100644
--- a/addons/web/static/src/js/fields/abstract_field.js
+++ b/addons/web/static/src/js/fields/abstract_field.js
@@ -273,7 +273,7 @@ var AbstractField = Widget.extend({
*/
reset: function (record, event) {
this._reset(record, event);
- return this._render();
+ return this._render() || $.when();
},
//--------------------------------------------------------------------------
diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js
index df7f018369d..4ddc674255a 100644
--- a/addons/web/static/src/js/fields/relational_fields.js
+++ b/addons/web/static/src/js/fields/relational_fields.js
@@ -684,7 +684,7 @@ var FieldX2Many = AbstractField.extend({
*
* @override
* @private
- * @returns {Deferred}
+ * @returns {Deferred|undefined}
*/
_render: function () {
if (!this.view) {