Skip to content

Commit

Permalink
fix(WidgetManager): Incorrect handling of widget visibility with vdom
Browse files Browse the repository at this point in the history
  • Loading branch information
floryst committed Dec 4, 2019
1 parent 7ff12ac commit fe76565
Showing 1 changed file with 27 additions and 30 deletions.
57 changes: 27 additions & 30 deletions Sources/Widgets/Core/WidgetManager/index.js
Expand Up @@ -137,43 +137,40 @@ function vtkWidgetManager(publicAPI, model) {
.getRepresentations()
.filter((r) => r.isA('vtkSVGRepresentation'));

if (widget.getVisibility() && svgReps.length) {
const pendingContent = svgReps
let pendingContent = [];
if (widget.getVisibility()) {
pendingContent = svgReps
.filter((r) => r.getVisibility())
.map((r) => r.render());
Promise.all(pendingContent).then((vnodes) => {
const oldVTree = svgVTrees.get(widget);
const newVTree = createSvgElement('g');
for (let ni = 0; ni < vnodes.length; ni++) {
newVTree.appendChild(vnodes[ni]);
}
}

const widgetGroup = widgetToSvgMap.get(widget);
let node = widgetGroup;
Promise.all(pendingContent).then((vnodes) => {
const oldVTree = svgVTrees.get(widget);
const newVTree = createSvgElement('g');
for (let ni = 0; ni < vnodes.length; ni++) {
newVTree.appendChild(vnodes[ni]);
}

const patchFns = diff(oldVTree, newVTree);
for (let j = 0; j < patchFns.length; j++) {
node = patchFns[j](node);
}
const widgetGroup = widgetToSvgMap.get(widget);
let node = widgetGroup;

if (!widgetGroup && node) {
// add
model.svgRoot.appendChild(node);
widgetToSvgMap.set(widget, node);
} else if (widgetGroup && !node) {
// delete
widgetGroup.remove();
widgetToSvgMap.delete(widget);
}
const patchFns = diff(oldVTree, newVTree);
for (let j = 0; j < patchFns.length; j++) {
node = patchFns[j](node);
}

svgVTrees.set(widget, newVTree);
});
} else {
const g = widgetToSvgMap.get(widget);
if (g) {
g.innerHTML = '';
if (!widgetGroup && node) {
// add
model.svgRoot.appendChild(node);
widgetToSvgMap.set(widget, node);
} else if (widgetGroup && !node) {
// delete
widgetGroup.remove();
widgetToSvgMap.delete(widget);
}
}

svgVTrees.set(widget, newVTree);
});
}
}
}
Expand Down

0 comments on commit fe76565

Please sign in to comment.