summaryrefslogtreecommitdiff
path: root/addons/web
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2018-02-06 11:17:06 +0100
committerChristophe Matthieu <chm@odoo.com>2018-02-08 15:46:41 +0100
commit3b2127c690959e1e43063b09472028a69a62fcb2 (patch)
treea4ec11fc358cc1e99865196673a86fc16d9b4762 /addons/web
parent3b9dda6106f9dd3eabd5dcb14f484a6072937dd6 (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')
-rw-r--r--addons/web/static/src/js/_deprecated/data.js1
-rw-r--r--addons/web/static/src/js/chrome/control_panel.js2
-rw-r--r--addons/web/static/src/js/core/bus.js5
-rw-r--r--addons/web/static/src/js/core/session.js3
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 be5496c55c7..eb70f330076 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 98ce7814b7a..6aace69cf8d 100644
--- a/addons/web/static/src/js/chrome/control_panel.js
+++ b/addons/web/static/src/js/chrome/control_panel.js
@@ -78,7 +78,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 1f715da4df1..5257453edab 100644
--- a/addons/web/static/src/js/core/bus.js
+++ b/addons/web/static/src/js/core/bus.js
@@ -10,8 +10,9 @@ var mixins = require('web.mixins');
* @class Bus
*/
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 c3181a7abe6..2a41e7da44d 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;