@@ -87,9 +87,9 @@ const ParentedView = forwardRef(function ParentedView(
87
87
* 1. Switch to targeted renderer.
88
88
* 2. Switch to this View's interactor style.
89
89
*/
90
- useEventListener ( containerRef , 'pointerenter' , ( ev : PointerEvent ) => {
90
+ const switchTarget = ( ) : boolean => {
91
91
const rendererAPI = rendererRef . current ;
92
- if ( ! rendererAPI ) return ;
92
+ if ( ! rendererAPI ) return false ;
93
93
94
94
const interactor = getInteractor ( ) ;
95
95
@@ -101,14 +101,25 @@ const ParentedView = forwardRef(function ParentedView(
101
101
const oldContainer = interactor . getContainer ( ) ;
102
102
const newContainer = containerRef . current ;
103
103
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 ( ) ;
112
123
interactor . handlePointerEnter ( ev ) ;
113
124
}
114
125
} ) ;
0 commit comments