diff options
| author | Christophe Matthieu <chm@odoo.com> | 2018-02-06 11:17:06 +0100 |
|---|---|---|
| committer | Christophe Matthieu <chm@odoo.com> | 2018-02-08 15:45:30 +0100 |
| commit | 4f5fc6ee552e5f2edca6401d04761a3c19797dc7 (patch) | |
| tree | 849e0deef856f5b72ad30ba12126ae056c97cfac /addons/web/static/src | |
| parent | 83795d37f3b512797dd78de027e444f305ab9ef1 (diff) | |
[FIX] web: properly set parent when using mixins
The parentedMixin doesn't automatically set the parent, so when this mixin
is used, the parent must be set manually. This wasn't done at several places,
and thus those elements weren't destroyed with their actual parent.
In master, we should probably make the ParentedMixin set the parent itself.
Diffstat (limited to 'addons/web/static/src')
| -rw-r--r-- | addons/web/static/src/js/_deprecated/data.js | 1 | ||||
| -rw-r--r-- | addons/web/static/src/js/chrome/control_panel.js | 2 | ||||
| -rw-r--r-- | addons/web/static/src/js/core/bus.js | 5 | ||||
| -rw-r--r-- | addons/web/static/src/js/core/session.js | 3 |
4 files changed, 7 insertions, 4 deletions
diff --git a/addons/web/static/src/js/_deprecated/data.js b/addons/web/static/src/js/_deprecated/data.js index 14b3daeb2c6..e13ca14da22 100644 --- a/addons/web/static/src/js/_deprecated/data.js +++ b/addons/web/static/src/js/_deprecated/data.js @@ -314,6 +314,7 @@ var DataSet = Class.extend(mixins.PropertiesMixin, { */ init: function (parent, model, context) { mixins.PropertiesMixin.init.call(this); + this.setParent(parent); this.model = model; this.context = context || {}; this.index = null; diff --git a/addons/web/static/src/js/chrome/control_panel.js b/addons/web/static/src/js/chrome/control_panel.js index 173d91aea25..3c445fd6bcb 100644 --- a/addons/web/static/src/js/chrome/control_panel.js +++ b/addons/web/static/src/js/chrome/control_panel.js @@ -47,7 +47,7 @@ var ControlPanel = Widget.extend({ this.template = template; } - this.bus = new Bus(); + this.bus = new Bus(this); this.bus.on("update", this, this.update); }, /** diff --git a/addons/web/static/src/js/core/bus.js b/addons/web/static/src/js/core/bus.js index bf33c1fe01e..e2b76594946 100644 --- a/addons/web/static/src/js/core/bus.js +++ b/addons/web/static/src/js/core/bus.js @@ -8,8 +8,9 @@ var mixins = require('web.mixins'); * Event Bus used to bind events scoped in the current instance */ return Class.extend(mixins.EventDispatcherMixin, { - init: function() { - mixins.EventDispatcherMixin.init.call(this, parent); + init: function (parent) { + mixins.EventDispatcherMixin.init.call(this); + this.setParent(parent); }, }); diff --git a/addons/web/static/src/js/core/session.js b/addons/web/static/src/js/core/session.js index 670e367be2e..ee9427827ba 100644 --- a/addons/web/static/src/js/core/session.js +++ b/addons/web/static/src/js/core/session.js @@ -28,7 +28,8 @@ var Session = core.Class.extend(mixins.EventDispatcherMixin, { "override_session" is set to true. */ init: function (parent, origin, options) { - mixins.EventDispatcherMixin.init.call(this, parent); + mixins.EventDispatcherMixin.init.call(this); + this.setParent(parent); options = options || {}; this.module_list = (options.modules && options.modules.slice()) || (window.odoo._modules && window.odoo._modules.slice()) || []; this.server = null; |
