From 859e29a7ac5b5068569a334ffaa760ef96b6f844 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9ry=20Debongnie?= Date: Wed, 6 Mar 2019 10:17:44 +0100 Subject: [PATCH] NO TEST :( fix issue with some widget not being rendered --- web/static/src/ts/core/qweb_vdom.ts | 8 +++----- .../tests/core/__snapshots__/component.test.ts.snap | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/web/static/src/ts/core/qweb_vdom.ts b/web/static/src/ts/core/qweb_vdom.ts index 33ca7478..48b35eb2 100644 --- a/web/static/src/ts/core/qweb_vdom.ts +++ b/web/static/src/ts/core/qweb_vdom.ts @@ -896,15 +896,13 @@ const widgetDirective: Directive = { ctx.parentNode }[_${dummyID}_index]=pvnode;pvnode.data.hook = {insert(vn){let nvn=w${widgetID}._mount(vnode, vn.elm);pvnode.elm=nvn.elm},remove(){w${widgetID}.${ keepAlive ? "detach" : "destroy" - }()}}});` + }()}}; w${widgetID}.__widget__.pvnode = pvnode;});` ); ctx.addElse(); ctx.addLine( - `def${defID} = def${defID}.then(()=>{if (!w${widgetID}.__widget__.vnode) {return};let vnode=h(w${widgetID}.__widget__.vnode.sel, {key: ${templateID}});vnode.elm=w${widgetID}.el;c${ - ctx.parentNode - }[_${dummyID}_index]=vnode;vnode.data.hook = {insert(a){a.elm.parentNode.replaceChild(w${widgetID}.el,a.elm);a.elm=w${widgetID}.el;w${widgetID}.__mount();},remove(){w${widgetID}.${ + `def${defID} = def${defID}.then(()=>{if (w${widgetID}.__widget__.isDestroyed) {return};let vnode;if (!w${widgetID}.__widget__.vnode){vnode=w${widgetID}.__widget__.pvnode} else { vnode=h(w${widgetID}.__widget__.vnode.sel, {key: ${templateID}});vnode.elm=w${widgetID}.el;vnode.data.hook = {insert(a){a.elm.parentNode.replaceChild(w${widgetID}.el,a.elm);a.elm=w${widgetID}.el;w${widgetID}.__mount();},remove(){w${widgetID}.${ keepAlive ? "detach" : "destroy" - }()}}});` + }()}}}c${ctx.parentNode}[_${dummyID}_index]=vnode;});` ); ctx.closeIf(); diff --git a/web/static/tests/core/__snapshots__/component.test.ts.snap b/web/static/tests/core/__snapshots__/component.test.ts.snap index b157fd0c..85b6188a 100644 --- a/web/static/tests/core/__snapshots__/component.test.ts.snap +++ b/web/static/tests/core/__snapshots__/component.test.ts.snap @@ -41,9 +41,9 @@ exports[`random stuff/miscellaneous snapshotting compiled code 1`] = ` } } if (isNew4) { - def3 = def3.then(vnode=>{let pvnode=h(vnode.sel, {key: 4});c1[_2_index]=pvnode;pvnode.data.hook = {insert(vn){let nvn=w4._mount(vnode, vn.elm);pvnode.elm=nvn.elm},remove(){w4.destroy()}}}); + def3 = def3.then(vnode=>{let pvnode=h(vnode.sel, {key: 4});c1[_2_index]=pvnode;pvnode.data.hook = {insert(vn){let nvn=w4._mount(vnode, vn.elm);pvnode.elm=nvn.elm},remove(){w4.destroy()}}; w4.__widget__.pvnode = pvnode;}); } else { - def3 = def3.then(()=>{if (!w4.__widget__.vnode) {return};let vnode=h(w4.__widget__.vnode.sel, {key: 4});vnode.elm=w4.el;c1[_2_index]=vnode;vnode.data.hook = {insert(a){a.elm.parentNode.replaceChild(w4.el,a.elm);a.elm=w4.el;w4.__mount();},remove(){w4.destroy()}}}); + def3 = def3.then(()=>{if (w4.__widget__.isDestroyed) {return};let vnode;if (!w4.__widget__.vnode){vnode=w4.__widget__.pvnode} else { vnode=h(w4.__widget__.vnode.sel, {key: 4});vnode.elm=w4.el;vnode.data.hook = {insert(a){a.elm.parentNode.replaceChild(w4.el,a.elm);a.elm=w4.el;w4.__mount();},remove(){w4.destroy()}}}c1[_2_index]=vnode;}); } extra.promises.push(def3); return vn1;