Skip to content

Commit 5bd0ec1

Browse files
authored
Merge pull request #128 from Kitware/fix-event-ordering
fix(ParentedView): switch interactor on capture
2 parents 418802a + e31d803 commit 5bd0ec1

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

src/core/internal/ParentedView.tsx

+18-18
Original file line numberDiff line numberDiff line change
@@ -91,11 +91,9 @@ const ParentedView = forwardRef(function ParentedView(
9191
const rendererAPI = rendererRef.current;
9292
if (!rendererAPI) return false;
9393

94-
const interactor = getInteractor();
94+
const interactor = getInteractor() as FixedVTKRenderWindowInteractor;
9595

96-
(interactor as FixedVTKRenderWindowInteractor).setCurrentRenderer(
97-
rendererAPI.get()
98-
);
96+
interactor.setCurrentRenderer(rendererAPI.get());
9997
interactor.setInteractorStyle(getInteractorStyle());
10098

10199
const oldContainer = interactor.getContainer();
@@ -108,21 +106,23 @@ const ParentedView = forwardRef(function ParentedView(
108106

109107
// Use wheel events to cover the posibility of interacting
110108
// with an out-of-focus browser window.
111-
useEventListener(containerRef, 'wheel', (ev: WheelEvent) => {
112-
if (switchTarget()) {
113-
// forward wheel-event to interactor
114-
const interactor = getInteractor();
115-
interactor.handleWheel(ev);
116-
}
117-
});
109+
useEventListener(
110+
containerRef,
111+
'wheel',
112+
() => {
113+
switchTarget();
114+
},
115+
{ capture: true }
116+
);
118117

119-
useEventListener(containerRef, 'pointerenter', (ev: PointerEvent) => {
120-
if (switchTarget()) {
121-
// forward pointer-event to interactor
122-
const interactor = getInteractor();
123-
interactor.handlePointerEnter(ev);
124-
}
125-
});
118+
useEventListener(
119+
containerRef,
120+
'pointerenter',
121+
() => {
122+
switchTarget();
123+
},
124+
{ capture: true }
125+
);
126126

127127
// --- resize handling --- //
128128

src/global.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ declare module '@kitware/vtk.js/type-patches' {
66
export interface FixedVTKRenderWindowInteractor
77
extends vtkRenderWindowInteractor {
88
setCurrentRenderer(ren: vtkRenderer): void;
9+
setContainer(el: HTMLElement | null): boolean;
910
}
1011

1112
export interface VtkRendererEvent {

0 commit comments

Comments
 (0)