@@ -87,9 +87,9 @@ const ParentedView = forwardRef(function ParentedView(
8787 * 1. Switch to targeted renderer.
8888 * 2. Switch to this View's interactor style.
8989 */
90- useEventListener ( containerRef , 'pointerenter' , ( ev : PointerEvent ) => {
90+ const switchTarget = ( ) : boolean => {
9191 const rendererAPI = rendererRef . current ;
92- if ( ! rendererAPI ) return ;
92+ if ( ! rendererAPI ) return false ;
9393
9494 const interactor = getInteractor ( ) ;
9595
@@ -101,14 +101,25 @@ const ParentedView = forwardRef(function ParentedView(
101101 const oldContainer = interactor . getContainer ( ) ;
102102 const newContainer = containerRef . current ;
103103 if ( oldContainer !== newContainer ) {
104- if ( oldContainer ) {
105- interactor . unbindEvents ( ) ;
106- }
107- if ( newContainer ) {
108- interactor . bindEvents ( newContainer ) ;
109- }
110-
111- // forward event to interactor
104+ return interactor . setContainer ( newContainer ) ;
105+ }
106+ return false ;
107+ } ;
108+
109+ // Use wheel events to cover the posibility of interacting
110+ // 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+ } ) ;
118+
119+ useEventListener ( containerRef , 'pointerenter' , ( ev : PointerEvent ) => {
120+ if ( switchTarget ( ) ) {
121+ // forward pointer-event to interactor
122+ const interactor = getInteractor ( ) ;
112123 interactor . handlePointerEnter ( ev ) ;
113124 }
114125 } ) ;
0 commit comments