Skip to content

Commit

Permalink
Merge pull request #1236 from Kitware/fix-null-manipulator-after-remove
Browse files Browse the repository at this point in the history
fix(Manipulators): Ensure manipulators aren't null
  • Loading branch information
floryst committed Dec 4, 2019
2 parents 9aff064 + c9a3ad3 commit 7ff12ac
Showing 1 changed file with 36 additions and 59 deletions.
95 changes: 36 additions & 59 deletions Sources/Interaction/Style/InteractorStyleManipulator/index.js
Expand Up @@ -179,74 +179,50 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
};

//-------------------------------------------------------------------------
publicAPI.removeMouseManipulator = (index) => {
if (model.mouseManipulators.length > index) {
model.mouseManipulators[index] = null;
const removeManipulator = (manipulator, list) => {
const index = list.indexOf(manipulator);
if (index === -1) {
return false;
}
list.splice(index, 1);
publicAPI.modified();
return true;
};

//-------------------------------------------------------------------------
publicAPI.removeVRManipulator = (index) => {
if (model.vrManipulators.length > index) {
model.vrManipulators[index] = null;
}
};

//-------------------------------------------------------------------------
publicAPI.removeGestureManipulator = (index) => {
if (model.gestureManipulators.length > index) {
model.gestureManipulators[index] = null;
}
};
publicAPI.removeMouseManipulator = (manipulator) =>
removeManipulator(manipulator, model.mouseManipulators);

//-------------------------------------------------------------------------
publicAPI.getMouseManipulator = (index) => {
let manipulator = null;
if (model.mouseManipulators.length > index) {
manipulator = model.mouseManipulators[index];
}
return manipulator;
};
publicAPI.removeVRManipulator = (manipulator) =>
removeManipulator(manipulator, model.vrManipulators);

//-------------------------------------------------------------------------
publicAPI.getVRManipulator = (index) => {
let manipulator = null;
if (model.vrManipulators.length > index) {
manipulator = model.vrManipulators[index];
}
return manipulator;
};
publicAPI.removeGestureManipulator = (manipulator) =>
removeManipulator(manipulator, model.gestureManipulators);

//-------------------------------------------------------------------------
publicAPI.getGestureManipulator = (index) => {
let manipulator = null;
if (model.gestureManipulators.length > index) {
manipulator = model.gestureManipulators[index];
const addManipulator = (manipulator, list) => {
const index = list.indexOf(manipulator);
if (index !== -1) {
return false;
}
return manipulator;
list.push(manipulator);
publicAPI.modified();
return true;
};

//-------------------------------------------------------------------------
publicAPI.addMouseManipulator = (manipulator) => {
const index = model.mouseManipulators.length;
model.mouseManipulators.push(manipulator);
return index;
};
publicAPI.addMouseManipulator = (manipulator) =>
addManipulator(manipulator, model.mouseManipulators);

//-------------------------------------------------------------------------
publicAPI.addVRManipulator = (manipulator) => {
const index = model.vrManipulators.length;
model.vrManipulators.push(manipulator);
return index;
};
publicAPI.addVRManipulator = (manipulator) =>
addManipulator(manipulator, model.vrManipulators);

//-------------------------------------------------------------------------
publicAPI.addGestureManipulator = (manipulator) => {
const index = model.gestureManipulators.length;
model.gestureManipulators.push(manipulator);
manipulator.setInteractorStyle(publicAPI);
return index;
};
publicAPI.addGestureManipulator = (manipulator) =>
addManipulator(manipulator, model.gestureManipulators);

//-------------------------------------------------------------------------
publicAPI.getNumberOfMouseManipulators = () => model.mouseManipulators.length;
Expand Down Expand Up @@ -439,6 +415,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
while (count--) {
const manip = model.mouseManipulators[count];
if (
manip &&
manip.isScrollEnabled() &&
manip.getShift() === callData.shiftKey &&
manip.getControl() === callData.controlKey &&
Expand Down Expand Up @@ -530,7 +507,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPinchEnabled()) {
if (manipulator && manipulator.isPinchEnabled()) {
manipulator.onStartPinch(model.interactor, callData.scale);
manipulator.startInteraction();
}
Expand All @@ -545,7 +522,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPinchEnabled()) {
if (manipulator && manipulator.isPinchEnabled()) {
manipulator.onEndPinch(model.interactor);
manipulator.endInteraction();
}
Expand All @@ -560,7 +537,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isRotateEnabled()) {
if (manipulator && manipulator.isRotateEnabled()) {
manipulator.onStartRotate(model.interactor, callData.rotation);
manipulator.startInteraction();
}
Expand All @@ -575,7 +552,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isRotateEnabled()) {
if (manipulator && manipulator.isRotateEnabled()) {
manipulator.onEndRotate(model.interactor);
manipulator.endInteraction();
}
Expand All @@ -590,7 +567,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPanEnabled()) {
if (manipulator && manipulator.isPanEnabled()) {
manipulator.onStartPan(model.interactor, callData.translation);
manipulator.startInteraction();
}
Expand All @@ -605,7 +582,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let count = model.gestureManipulators.length;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPanEnabled()) {
if (manipulator && manipulator.isPanEnabled()) {
manipulator.onEndPan(model.interactor);
manipulator.endInteraction();
}
Expand All @@ -620,7 +597,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let actionCount = 0;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPinchEnabled()) {
if (manipulator && manipulator.isPinchEnabled()) {
manipulator.onPinch(
model.interactor,
callData.pokedRenderer,
Expand All @@ -640,7 +617,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let actionCount = 0;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isPanEnabled()) {
if (manipulator && manipulator.isPanEnabled()) {
manipulator.onPan(
model.interactor,
callData.pokedRenderer,
Expand All @@ -660,7 +637,7 @@ function vtkInteractorStyleManipulator(publicAPI, model) {
let actionCount = 0;
while (count--) {
const manipulator = model.gestureManipulators[count];
if (manipulator.isRotateEnabled()) {
if (manipulator && manipulator.isRotateEnabled()) {
manipulator.onRotate(
model.interactor,
callData.pokedRenderer,
Expand Down

0 comments on commit 7ff12ac

Please sign in to comment.