From e1a1ca774314c841e7d2c59266eccdf4444d43a7 Mon Sep 17 00:00:00 2001 From: Michael Hollister Date: Tue, 12 Nov 2024 23:44:19 -0600 Subject: [PATCH] Hide speed menu when clicking outside element --- receivers/electron/src/player/Renderer.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/receivers/electron/src/player/Renderer.ts b/receivers/electron/src/player/Renderer.ts index 8297909..a88e4dc 100644 --- a/receivers/electron/src/player/Renderer.ts +++ b/receivers/electron/src/player/Renderer.ts @@ -585,14 +585,20 @@ playerCtrlFullscreen.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent. playbackRates.forEach(r => { const entry = document.getElementById(`speedMenuEntry_${r}`); - entry.onclick = () => { player.setPlaybackRate(parseFloat(r)); playerCtrlStateUpdate(PlayerControlEvent.SetPlaybackRate); }; + entry.onclick = () => { + player.setPlaybackRate(parseFloat(r)); + playerCtrlStateUpdate(PlayerControlEvent.SetPlaybackRate); + playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); + }; }); videoElement.onclick = () => { + if (!playerCtrlSpeedMenuShown) { if (player.isPaused()) { playerCtrlStateUpdate(PlayerControlEvent.Play); } else { playerCtrlStateUpdate(PlayerControlEvent.Pause); + } } }; videoElement.ondblclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleFullscreen); }; @@ -630,6 +636,14 @@ document.onmousemove = function() { window.onresize = () => { playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate); }; +// Listener for hiding speed menu when clicking outside element +document.addEventListener('click', (event: MouseEvent) => { + const node = event.target as Node; + if (playerCtrlSpeedMenuShown && !playerCtrlSpeed.contains(node) && !playerCtrlSpeedMenu.contains(node)){ + playerCtrlStateUpdate(PlayerControlEvent.ToggleSpeedMenu); + } +}); + // Add the keydown event listener to the document const skipInterval = 10; const volumeIncrement = 0.1;