@@ -452,24 +452,49 @@ function update() {
452452let isMouseMoving = false ;
453453let mouseStopTimeout ;
454454
455+ const guiElement = document . querySelector ( '.dg.main' ) ;
456+ let isMouseOnDatGui = false ;
457+
458+ function onMouseStopTimeout ( ) {
459+ clearTimeout ( mouseStopTimeout ) ;
460+ mouseStopTimeout = null ;
461+ isMouseMoving = false ;
462+ gui . close ( )
463+ document . body . style . cursor = 'none' ;
464+ }
465+
466+ guiElement . addEventListener ( 'mouseenter' , ( ) => {
467+ isMouseOnDatGui = true ;
468+ clearTimeout ( mouseStopTimeout ) ;
469+ mouseStopTimeout = null ;
470+ } ) ;
471+
472+ guiElement . addEventListener ( 'mouseleave' , ( ) => {
473+ isMouseOnDatGui = false ;
474+ if ( ! mouseStopTimeout ) {
475+ mouseStopTimeout = setTimeout ( onMouseStopTimeout , 1000 ) ;
476+ }
477+ } ) ;
478+
455479document . addEventListener ( 'mousemove' , e => {
456480 if ( ! isMouseMoving ) {
457481 isMouseMoving = true ;
458482 gui . open ( )
459483 document . body . style . cursor = 'auto' ;
460484 }
461485
462- // Clear the timeout to reset the stop detection
463486 clearTimeout ( mouseStopTimeout ) ;
487+ mouseStopTimeout = null ;
464488
465- // Set a timeout to detect when the mouse stops
466- mouseStopTimeout = setTimeout ( _ => {
467- isMouseMoving = false ;
468- gui . close ( )
469- document . body . style . cursor = 'none' ;
470- } , 1000 ) ;
489+ if ( isMouseOnDatGui ) {
490+ return ;
491+ }
492+
493+ mouseStopTimeout = setTimeout ( onMouseStopTimeout , 1000 ) ;
471494} ) ;
472495
496+
497+
473498/******************************/
474499async function loadSongFromURL ( ) {
475500 const url = new URL ( window . location . href ) ;
0 commit comments