fix(epg): move the guide focus with the N jump and keep DOM focus

N left the roving focus on its row while the jump scrolled to the playing
channel, so the CDK could recycle the focused row and drop DOM focus to
the page, and the next arrow key scrolled all the way back.

- N moves the roving focus to the playing row; only the keys that move
  the focus (arrows) reveal it, so N's smooth jump is never cancelled.
- The DOM focus is handed to the roving cell once its row is rendered,
  and never taken from a control outside the grid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Opus 5.5 committed 2026-10-01 21:01:16 +02:00
1 parent f80a899212
commit a2ab00d3cd
7 files changed
+163 -20

No files matched your search

@@ -183,6 +183,10 @@ test('@epg @electron opens the programme guide with the playlist channels, switc
);
await app.mainWindow.keyboard.press('n');
await expect.poll(() => nowLineInLane(app.mainWindow)).toBe(true);
// The keyboard focus follows the jump to the playing row.
await expect(
rows.nth(0).locator('[data-epg-guide-grid][tabindex="0"]')
).toBeFocused();
// "Only with EPG" hides the silent channel once coverage is known.
const toggle = guide.locator('.guide-toolbar__toggle input');