@@ -25,50 +25,27 @@ function vtkGatedMouseRangeManipulator(publicAPI, model) {
2525 publicAPI . modified ( ) ;
2626 } ;
2727
28- // Define the mouse move listener function outside initializeGlobalMouseMove
29- const createMouseMoveListener = ( interactor , renderer ) => {
30- return ( event ) => {
31- // Proceed if the mouse is inside the container.
32- if ( ! model . viewContainer . contains ( event . target ) ) {
33- return ;
34- }
35- // Map the event client coordinates to the container's coordinate system.
36- const rect = model . viewContainer . getBoundingClientRect ( ) ;
37- const position = {
38- x : event . clientX - rect . left ,
39- y : event . clientY - rect . top ,
40- } ;
28+ const cleanupListener = ( ) => {
29+ model . mouseMoveListenerSubscription ?. unsubscribe ( ) ;
30+ model . mouseMoveListenerSubscription = null ;
31+ } ;
4132
33+ publicAPI . setupMouseMove = ( interactor ) => {
34+ cleanupListener ( ) ;
35+ model . mouseMoveListenerSubscription = interactor . onMouseMove ( ( event ) => {
36+ const invertY = {
37+ ...event . position ,
38+ y : interactor . getView ( ) . getSize ( ) [ 1 ] - event . position . y ,
39+ } ;
4240 if ( model . newInteraction ) {
4341 model . newInteraction = false ;
44- publicAPI . onButtonDown ( interactor , renderer , position ) ;
42+ publicAPI . onButtonDown ( interactor , event . pokedRenderer , invertY ) ;
4543 }
46- publicAPI . onMouseMove ( interactor , renderer , position ) ;
47- } ;
44+ publicAPI . onMouseMove ( interactor , event . pokedRenderer , invertY ) ;
45+ } ) ;
4846 } ;
4947
50- // Initializes a global mousemove listener on the view container.
51- // Only events occurring over the container will trigger onMouseMove.
52- publicAPI . initializeGlobalMouseMove = ( interactor , renderer , container ) => {
53- model . viewContainer = container ;
54- if ( ! model . mouseMoveListener ) {
55- model . mouseMoveListener = createMouseMoveListener ( interactor , renderer ) ;
56- model . viewContainer . addEventListener (
57- 'mousemove' ,
58- model . mouseMoveListener
59- ) ;
60- }
61- } ;
62-
63- publicAPI . delete = macro . chain ( publicAPI . delete , ( ) => {
64- if ( model . mouseMoveListener && model . viewContainer ) {
65- model . viewContainer . removeEventListener (
66- 'mousemove' ,
67- model . mouseMoveListener
68- ) ;
69- model . mouseMoveListener = null ;
70- }
71- } ) ;
48+ publicAPI . delete = macro . chain ( publicAPI . delete , cleanupListener ) ;
7249}
7350
7451function extend ( publicAPI , model , initialValues = { } ) {
0 commit comments