Skip to content

Commit 22517b7

Browse files
committed
docs(seedwidget): fix SeedWidget example
Crash after removing a widget and adding a new widget. widgetHandle was accessed despite having been previously deleted
1 parent b759efc commit 22517b7

File tree

1 file changed

+12
-9
lines changed
  • Sources/Widgets/Widgets3D/SeedWidget/example

1 file changed

+12
-9
lines changed

Sources/Widgets/Widgets3D/SeedWidget/example/index.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ renderer.addActor(actor);
4747
const widgetManager = vtkWidgetManager.newInstance();
4848
widgetManager.setRenderer(renderer);
4949

50-
let widget = null;
51-
let widgetHandle = null;
52-
50+
let previousWidgetHandle = null;
5351
renderer.resetCamera();
5452

5553
// -----------------------------------------------------------
@@ -59,10 +57,10 @@ renderer.resetCamera();
5957
const gui = new GUI();
6058
const params = {
6159
AddWidget: (eventOrCenter = null) => {
62-
if (widgetHandle) {
63-
widgetHandle.endInteract();
60+
if (previousWidgetHandle) {
61+
previousWidgetHandle.endInteract();
6462
}
65-
widget = vtkSeedWidget.newInstance();
63+
const widget = vtkSeedWidget.newInstance();
6664

6765
// Important: set the manipulator of the widget to constrain movement to the actor
6866
widget.setManipulator(manipulator);
@@ -78,17 +76,24 @@ const params = {
7876

7977
// Start placement interaction
8078
widget.placeWidget(cone.getOutputData().getBounds());
81-
widgetHandle = widgetManager.addWidget(widget);
79+
const widgetHandle = widgetManager.addWidget(widget);
8280
if (Array.isArray(eventOrCenter)) {
8381
widgetHandle.setCenter(eventOrCenter);
8482
} else {
8583
widgetHandle.startInteract();
8684
}
85+
global.widget = widget;
86+
global.widgetHandle = widgetHandle;
87+
previousWidgetHandle = widgetHandle;
8788
},
8889
RemoveWidget: () => {
90+
if (previousWidgetHandle) {
91+
previousWidgetHandle.endInteract();
92+
}
8993
const widgets = widgetManager.getWidgets();
9094
if (!widgets.length) return;
9195
widgetManager.removeWidget(widgets[widgets.length - 1]);
96+
previousWidgetHandle = null;
9297
renderWindow.render();
9398
},
9499
};
@@ -102,9 +107,7 @@ params.AddWidget([0.5, 0, 0]);
102107
// globals
103108
// -----------------------------------------------------------
104109

105-
global.widget = widget;
106110
global.renderer = renderer;
107111
global.fullScreenRenderer = fullScreenRenderer;
108112
global.renderWindow = renderWindow;
109113
global.widgetManager = widgetManager;
110-
global.widgetHandle = widgetHandle;

0 commit comments

Comments
 (0)