Skip to content

Commit e10a87a

Browse files
authored
Merge pull request #2381 from finetjul/2374-fix-widget-picking-with-invisible-handles
fix(widget): fix widget picking when substates are invisible
2 parents 0cbbc63 + e90a864 commit e10a87a

File tree

5 files changed

+32
-45
lines changed
  • Sources/Widgets/Representations

5 files changed

+32
-45
lines changed

Sources/Widgets/Representations/ArrowHandleRepresentation/index.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -251,17 +251,15 @@ function vtkArrowHandleRepresentation(publicAPI, model) {
251251
return orientationRotation;
252252
}
253253

254+
const superGetRepresentationStates = publicAPI.getRepresentationStates;
255+
publicAPI.getRepresentationStates = (input = model.inputData[0]) =>
256+
superGetRepresentationStates(input).filter(
257+
(state) => state.getOrigin?.() && state.isVisible?.()
258+
);
259+
254260
publicAPI.requestDataInternal = (inData, outData) => {
255261
const { points, scale, color, direction } = model.internalArrays;
256-
const list = publicAPI
257-
.getRepresentationStates(inData[0])
258-
.filter(
259-
(state) =>
260-
state.getOrigin &&
261-
state.getOrigin() &&
262-
state.isVisible &&
263-
state.isVisible()
264-
);
262+
const list = publicAPI.getRepresentationStates(inData[0]);
265263
const totalCount = list.length;
266264

267265
if (color.getNumberOfValues() !== totalCount) {

Sources/Widgets/Representations/CircleContextRepresentation/index.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,16 @@ function vtkCircleContextRepresentation(publicAPI, model) {
111111
model.pipelines.circle.actor.getProperty().setOpacity(opacity);
112112
};
113113

114+
const superGetRepresentationStates = publicAPI.getRepresentationStates;
115+
publicAPI.getRepresentationStates = (input = model.inputData[0]) =>
116+
superGetRepresentationStates(input).filter(
117+
(state) => state.getOrigin?.() && state.isVisible?.()
118+
);
114119
// --------------------------------------------------------------------------
115120

116121
publicAPI.requestData = (inData, outData) => {
117122
const { points, scale, color, direction } = model.internalArrays;
118-
const list = publicAPI
119-
.getRepresentationStates(inData[0])
120-
.filter(
121-
(state) =>
122-
state.getOrigin &&
123-
state.getOrigin() &&
124-
state.isVisible &&
125-
state.isVisible()
126-
);
123+
const list = publicAPI.getRepresentationStates(inData[0]);
127124
const totalCount = list.length;
128125

129126
if (color.getNumberOfValues() !== totalCount) {

Sources/Widgets/Representations/CubeHandleRepresentation/index.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,19 +55,16 @@ function vtkCubeHandleRepresentation(publicAPI, model) {
5555

5656
publicAPI.addActor(model.actor);
5757

58+
const superGetRepresentationStates = publicAPI.getRepresentationStates;
59+
publicAPI.getRepresentationStates = (input = model.inputData[0]) =>
60+
superGetRepresentationStates(input).filter(
61+
(state) => state.getOrigin?.() && state.isVisible?.()
62+
);
5863
// --------------------------------------------------------------------------
5964

6065
publicAPI.requestData = (inData, outData) => {
6166
const { points, scale, color } = model.internalArrays;
62-
const list = publicAPI
63-
.getRepresentationStates(inData[0])
64-
.filter(
65-
(state) =>
66-
state.getOrigin &&
67-
state.getOrigin() &&
68-
state.isVisible &&
69-
state.isVisible()
70-
);
67+
const list = publicAPI.getRepresentationStates(inData[0]);
7168
const totalCount = list.length;
7269

7370
if (color.getNumberOfValues() !== totalCount) {

Sources/Widgets/Representations/SphereContextRepresentation/index.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,14 @@ function vtkSphereContextRepresentation(publicAPI, model) {
6363
publicAPI.setOpacity = (opacity) => {
6464
model.pipelines.circle.actor.getProperty().setOpacity(opacity);
6565
};
66+
const superGetRepresentationStates = publicAPI.getRepresentationStates;
67+
publicAPI.getRepresentationStates = (input = model.inputData[0]) =>
68+
superGetRepresentationStates(input).filter(
69+
(state) => state.getOrigin?.() && state.isVisible?.()
70+
);
6671
publicAPI.requestData = (inData, outData) => {
6772
const { points, scale, color } = model.internalArrays;
68-
const list = publicAPI
69-
.getRepresentationStates(inData[0])
70-
.filter(
71-
(state) =>
72-
state.getOrigin &&
73-
state.getOrigin() &&
74-
state.isVisible &&
75-
state.isVisible()
76-
);
73+
const list = publicAPI.getRepresentationStates(inData[0]);
7774
const totalCount = list.length;
7875

7976
if (color.getNumberOfValues() !== totalCount) {

Sources/Widgets/Representations/SphereHandleRepresentation/index.js

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,17 @@ function vtkSphereHandleRepresentation(publicAPI, model) {
104104
model.displayMapper.setCallback(callback ? callbackProxy : null);
105105
};
106106

107+
const superGetRepresentationStates = publicAPI.getRepresentationStates;
108+
publicAPI.getRepresentationStates = (input = model.inputData[0]) =>
109+
superGetRepresentationStates(input).filter(
110+
(state) => state.getOrigin?.() && state.isVisible?.()
111+
);
112+
107113
// --------------------------------------------------------------------------
108114

109115
publicAPI.requestData = (inData, outData) => {
110116
const { points, scale, color } = model.internalArrays;
111-
const list = publicAPI
112-
.getRepresentationStates(inData[0])
113-
.filter(
114-
(state) =>
115-
state.getOrigin &&
116-
state.getOrigin() &&
117-
state.isVisible &&
118-
state.isVisible()
119-
);
117+
const list = publicAPI.getRepresentationStates(inData[0]);
120118
const totalCount = list.length;
121119

122120
if (color.getNumberOfValues() !== totalCount) {

0 commit comments

Comments
 (0)