mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-08 10:46:06 +00:00
fix(studio): timeline seekbar focus blocks NLE keyboard shortcuts (#1137)
* fix(studio): blur seekbar after seek so NLE shortcuts resume
Clicking the timeline seekbar (role=slider) explicitly called
e.currentTarget.focus(), leaving focus on the slider element.
shouldIgnorePlaybackShortcutTarget filters out [role='slider'] targets,
so all playback shortcuts (Space/J/K/L/arrows) were silently blocked
until the user clicked away.
- blur() the seekbar in cleanup() so focus returns after pointer release
- replace the default white focus ring with a focus-visible ring (keyboard-only)
- add tabIndex={-1} + outline-none to the NLE timeline scroll div,
which Chrome auto-focuses for overflow:auto elements
Fixes #1136
* fix(studio): blur color slider on pointer release (sister bug)
Same pattern as the seekbar: role=slider + tabIndex=0 receives natural
browser focus on click, blocking playback shortcuts while focused.
ColorSlider never had an onPointerUp handler; adding one to blur
immediately after release matches the seekbar's cleanup() blur.
This commit is contained in:
@@ -80,6 +80,9 @@ function ColorSlider({
|
||||
event.currentTarget.setPointerCapture(event.pointerId);
|
||||
commitFromClientX(event.clientX);
|
||||
}}
|
||||
onPointerUp={(event) => {
|
||||
event.currentTarget.blur();
|
||||
}}
|
||||
onPointerMove={(event) => {
|
||||
if (disabled || event.buttons !== 1) return;
|
||||
commitFromClientX(event.clientX);
|
||||
|
||||
Reference in New Issue
Block a user