From 39c5c905cfdc4829dcf41bbfc28837c51c8810c4 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Wed, 9 Sep 2026 18:33:50 +0100 Subject: [PATCH] web/repo: keep a collapsing file's header in view nicer when "ticking" off files in a diff Signed-off-by: oppiliappan --- web/src/lib/components/repo/DiffCodeView.svelte | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/web/src/lib/components/repo/DiffCodeView.svelte b/web/src/lib/components/repo/DiffCodeView.svelte index 328f5b310..c153b710b 100644 --- a/web/src/lib/components/repo/DiffCodeView.svelte +++ b/web/src/lib/components/repo/DiffCodeView.svelte @@ -290,14 +290,23 @@ $effect(() => { const instance = view; if (!instance) return; + let pinTo: number | undefined; for (const file of files) { const open = isOpen ? isOpen(file.key) : true; if (openState.get(file.key) !== open) openState.set(file.key, open); const item = instance.getItem(file.key); if (item?.type !== "diff" || item.collapsed === !open) continue; + if (!open) { + const top = instance.getTopForItem(file.key); + if (top != null && window.scrollY > dockTop() + top) pinTo = top; + } instance.updateItem({ ...item, collapsed: !open, version: bumpVersion(file.key) }); } syncScroll(); + if (pinTo != null) { + window.scrollTo({ top: dockTop() + pinTo, behavior: "instant" }); + syncScroll(); + } }); $effect(() => { -- 2.51.2