Skip to content

Commit 0b13bb1

Browse files
fix(web): place a caret when focus moves into a file with none
Co-Authored-By: Claude Opus 5.5 <[email protected]>
1 parent 23b7207 commit 0b13bb1

2 files changed

Lines changed: 8 additions & 2 deletions

File tree

‎apps/web/src/components/files/FilePreviewPanel.browser.test.tsx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ describe("source file focus", () => {
188188
};
189189
await screen.rerender(panel());
190190
await vi.waitFor(editorHasFocus);
191+
await userEvent.keyboard("x");
192+
await vi.waitFor(() => expect(deepActiveElement()?.textContent).toContain("xconst server"));
191193

192194
(deepActiveElement() as HTMLElement).blur();
193195
expect(focus.focus("panel", false)).toBe(true);

‎apps/web/src/components/files/FilePreviewPanel.tsx‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,9 +1167,13 @@ export default function FilePreviewPanel({
11671167
const focusEditorFromContent = () => {
11681168
const editor = fileEditorRef.current;
11691169
if (!editor || document.activeElement !== contentFocusRef.current) return;
1170-
const atRevealLine = revealLine !== null && !editor.getViewState().selections?.length;
1170+
// Without a caret the editor focuses with no selection, so no caret shows and typing
1171+
// lands on whatever the browser selection held.
1172+
const hasCaret = Boolean(editor.getViewState().selections?.length);
11711173
editor.focus(
1172-
atRevealLine ? { preventScroll: true, lineNumber: revealLine } : { preventScroll: true },
1174+
hasCaret
1175+
? { preventScroll: true }
1176+
: { preventScroll: true, lineNumber: revealLine ?? "first-visible" },
11731177
);
11741178
};
11751179
const handleEditorChange = (editor: FileEditor | null) => {

0 commit comments

Comments
 (0)