Skip to content

Commit f70e09d

Browse files
committed
mouse to keep controls open
1 parent e66c3eb commit f70e09d

1 file changed

Lines changed: 32 additions & 7 deletions

File tree

src/main.js

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -452,24 +452,49 @@ function update() {
452452
let isMouseMoving = false;
453453
let 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+
455479
document.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
/******************************/
474499
async function loadSongFromURL() {
475500
const url = new URL(window.location.href);

0 commit comments

Comments
 (0)