mobile qol

This commit is contained in:
2026-06-08 15:09:38 +02:00
parent bdc78fc5a5
commit c615676465

View File

@@ -176,6 +176,8 @@ class v0ck {
let restorePlaybackRate = 1; let restorePlaybackRate = 1;
let ignoreNextClick = false; let ignoreNextClick = false;
let wasPausedWhenStarted = false; let wasPausedWhenStarted = false;
// Mobile tap-to-show-controls: true when this touch revealed the controls bar
let controlsJustShown = false;
const speedIndicator = player.querySelector('.v0ck_speed_indicator'); const speedIndicator = player.querySelector('.v0ck_speed_indicator');
// (mouse position is now tracked via docMouseX/docMouseY in resetControlsTimer block) // (mouse position is now tracked via docMouseX/docMouseY in resetControlsTimer block)
@@ -284,6 +286,14 @@ class v0ck {
player.classList.toggle('v0ck_fullscreen', !!isThisPlayerFS); player.classList.toggle('v0ck_fullscreen', !!isThisPlayerFS);
} }
// Mobile: on touchstart, record whether controls were hidden so the
// subsequent click can decide whether to show controls or toggle play.
player.addEventListener('touchstart', () => {
if (isMobile) {
controlsJustShown = !player.classList.contains('v0ck_hover');
}
}, { passive: true, capture: true });
player.addEventListener('click', e => { player.addEventListener('click', e => {
if (ignoreNextClick) { if (ignoreNextClick) {
e.stopPropagation(); e.stopPropagation();
@@ -294,10 +304,13 @@ class v0ck {
const path = e.path || (e.composedPath && e.composedPath()); const path = e.path || (e.composedPath && e.composedPath());
const isControls = !!path.filter(f => f.classList?.contains('v0ck_player_controls')).length; const isControls = !!path.filter(f => f.classList?.contains('v0ck_player_controls')).length;
if (!isControls) { if (!isControls) {
if (isMobile && !player.classList.contains('v0ck_hover')) { if (isMobile && controlsJustShown) {
// First tap: controls were just revealed by this touch — don't toggle play
controlsJustShown = false;
player.classList.add('v0ck_hover'); player.classList.add('v0ck_hover');
return; return;
} }
controlsJustShown = false;
togglePlay(e); togglePlay(e);
} }
}); });