Skip to content

Commit

Permalink
fix mouse bind events when change in viewport out-of-focus
Browse files Browse the repository at this point in the history
  • Loading branch information
jadh4v committed Jan 19, 2024
1 parent 894aff7 commit d946ef3
Showing 1 changed file with 55 additions and 1 deletion.
56 changes: 55 additions & 1 deletion src/core/internal/ParentedView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,43 @@ const ParentedView = forwardRef(function ParentedView(
* 1. Switch to targeted renderer.
* 2. Switch to this View's interactor style.
*/
useEventListener(containerRef, 'pointerenter', (ev: PointerEvent) => {
const switchTarget = (): boolean => {
const rendererAPI = rendererRef.current;
if (!rendererAPI) return false;

const interactor = getInteractor();

(interactor as FixedVTKRenderWindowInteractor).setCurrentRenderer(
rendererAPI.get()
);
interactor.setInteractorStyle(getInteractorStyle());

const oldContainer = interactor.getContainer();
const newContainer = containerRef.current;
if (oldContainer !== newContainer) {
if (oldContainer) {
interactor.unbindEvents();
}
if (newContainer) {
console.log('sdj: parentView: bindEvents');
interactor.bindEvents(newContainer);
}
/*
// clearTimeout(interactor.get('wheelTimeoutID'));
interactor.set(
{
wheelTimeoutID: 0,
},
true
);
*/
return true;
}
return false;
};

/*
useEventListener(containerRef, 'wheel', (ev: WheelEvent) => {
const rendererAPI = rendererRef.current;
if (!rendererAPI) return;
Expand All @@ -105,10 +141,28 @@ const ParentedView = forwardRef(function ParentedView(
interactor.unbindEvents();
}
if (newContainer) {
console.log('sdj: parentView: bindEvents');
interactor.bindEvents(newContainer);
}
// forward event to interactor
interactor.handleWheel(ev);
}
});
*/

useEventListener(containerRef, 'wheel', (ev: WheelEvent) => {
if (switchTarget()) {
// forward event to interactor
const interactor = getInteractor();
interactor.handleWheel(ev);
}
});

useEventListener(containerRef, 'pointerenter', (ev: PointerEvent) => {
if (switchTarget()) {
// forward event to interactor
const interactor = getInteractor();
interactor.handlePointerEnter(ev);
}
});
Expand Down

0 comments on commit d946ef3

Please sign in to comment.