diff options
| author | Pierre Paridans <app@odoo.com> | 2019-03-27 13:50:22 +0000 |
|---|---|---|
| committer | Pierre Paridans <app@odoo.com> | 2019-05-23 15:41:30 +0000 |
| commit | 71a2d7c06a6142bfe3e967aa8ff60552e24eb0c1 (patch) | |
| tree | 82ce8a7bc574c7bf8a443d702a42fa6f11568898 /addons/web/static/src | |
| parent | e5c65b22ab6bf7caabd7b8923949d687b61a01a7 (diff) | |
[REF] web: don't destroy twice a widget's children
Widget class indirectly inherits from ParentedMixin (through
PropertiesMixin).
The Widget's children are destroyed in both the ParentedMixin and the
Widget's own destroy() method.
This commit prevents from trying to destroy already destroyed children
and specifically from looping again on those children (resulting into a
minor performance improvement).
closes odoo/odoo#32174
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/core/mixins.js | 4 | ||||
| -rw-r--r-- | addons/web/static/src/js/core/widget.js | 5 |
2 files changed, 3 insertions, 6 deletions
diff --git a/addons/web/static/src/js/core/mixins.js b/addons/web/static/src/js/core/mixins.js index 228ac2d68dd..06f39e0fcfe 100644 --- a/addons/web/static/src/js/core/mixins.js +++ b/addons/web/static/src/js/core/mixins.js @@ -98,8 +98,8 @@ var ParentedMixin = { * resource it could have reserved. */ destroy : function () { - _.each(this.getChildren(), function (el) { - el.destroy(); + this.getChildren().forEach(function (child) { + child.destroy(); }); this.setParent(undefined); this.__parentedDestroyed = true; diff --git a/addons/web/static/src/js/core/widget.js b/addons/web/static/src/js/core/widget.js index 0de8c6aa1cd..441899e30db 100644 --- a/addons/web/static/src/js/core/widget.js +++ b/addons/web/static/src/js/core/widget.js @@ -172,13 +172,10 @@ var Widget = core.Class.extend(mixins.PropertiesMixin, ServicesMixin, { * destroying itself. */ destroy: function () { - this.getChildren().forEach(function (child) { - child.destroy(); - }); + mixins.PropertiesMixin.destroy.call(this); if (this.$el) { this.$el.remove(); } - mixins.PropertiesMixin.destroy.call(this); }, //-------------------------------------------------------------------------- |
