[FIX] slots: make sure handlers are properly bound to component

In some situations (a slot inside a slot), the combine method was
wrongly copying all properties of the scope into the context, which
caused the event handling system to wrongly use a subobject as component
(since it detects the fact that __owl__ is a own property_).
Consequently, we could have very subtle issue with some properties being
shadowed by a sub object.
This commit is contained in:
Géry Debongnie
2021-07-07 10:31:37 +02:00
committed by aab-odoo
parent 9cfafc30b5
commit ea3c6f7bf0
2 changed files with 49 additions and 2 deletions
+3 -2
View File
@@ -139,8 +139,9 @@ const UTILS: Utils = {
},
combine(context, scope) {
const clone = Object.create(context);
for (let k in scope) {
clone[k] = scope[k];
while (!isComponent(scope)) {
Object.assign(clone, scope);
scope = scope.__proto__;
}
return clone;
},