Home

dev / openkara

publicthedavidweng/OpenKara· sync paused
Overview Code History Branches Pull requestsIssuesInsights
main
HomeOverview Code PRsIssues

fix(audience): let fullscreen lyrics own the whole monitor and hide controls on pointer idle (#234) (#241)

2 months ago

7a1d9df
Authored
Davy7/26/2026, 2:45:36 AM
`openFullscreenPlayer` passed the monitor's PHYSICAL pixel geometry straight
into `WebviewWindow`'s x/y/width/height, which Tauri interprets as LOGICAL
pixels, and never requested fullscreen. On HiDPI or mixed-DPI setups the window
did not coincide with the monitor, so the `bg-black` window showed through as a
band. On top of that, the audience stage permanently reserved 144px for
controls that auto-hide anyway, leaving a dead strip along the bottom even while
they were hidden.

Convert the geometry with the monitor's scaleFactor and create the window
borderless + fullscreen so the viewport matches the monitor at any scale factor,
drop the reserved inset, and give the audience lyric list a half-viewport spacer
at each end so the first and last lines can center like every other line
(paged plain text still fills the viewport exactly, so it gets neither).

The controls' auto-hide was already a plain 3s pointer-idle timer with no
dependence on playback state; what was missing is that a pointer resting ON the
bar still faded it out from under the user. Keep the idle timer, add a hover
guard, switch to pointer events so pen and touch also wake it, and hide the OS
cursor along with the controls so it cannot linger as a bright dot on a
projected screen.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

Parente75a5e9

9 files changed
  • src/components/Lyrics/LyricsPanel.tsx+12−1
  • src/components/Playback/PlaybackStage.test.tsx+3−3
  • src/components/Playback/PlaybackStage.tsx+0−7
  • src/components/Player/FullscreenControls.test.tsx+99−21
  • src/components/Player/FullscreenControls.tsx+51−38
  • src/components/Player/FullscreenPlayerView.test.tsx+8−26
  • src/components/Player/FullscreenPlayerView.tsx+7−21
src/lib/fullscreen-player.test.ts
+13
−4
  • src/lib/fullscreen-player.ts+21−5