From 0afbfb12cd68c7346bf45898ea820ff89d779c2c Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sun, 30 Nov 2025 18:47:46 -0800 Subject: [PATCH] handle scroll reset on grid page change --- .../item-grid-list/item-grid-list.tsx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/renderer/components/item-list/item-grid-list/item-grid-list.tsx b/src/renderer/components/item-list/item-grid-list/item-grid-list.tsx index 6ee51f77c..490f406b4 100644 --- a/src/renderer/components/item-list/item-grid-list/item-grid-list.tsx +++ b/src/renderer/components/item-list/item-grid-list/item-grid-list.tsx @@ -52,6 +52,7 @@ import { LibraryItem } from '/@/shared/types/domain-types'; interface VirtualizedGridListProps { _tableMetaVersion: number; // Used to trigger rerenders via React.memo comparison controls: ItemControls; + currentPage?: number; data: unknown[]; enableDrag?: boolean; enableExpansion: boolean; @@ -78,6 +79,7 @@ interface VirtualizedGridListProps { const VirtualizedGridList = React.memo( ({ controls, + currentPage, data, enableDrag, enableExpansion, @@ -149,6 +151,20 @@ const VirtualizedGridList = React.memo( } const calculateInitialScrollOffset = (): number => { + // When page changes, always start at top (ignore initialTop) + if (currentPage !== undefined) { + if (currentPage === 0 && initialTop) { + if (initialTop.type === 'offset') { + return initialTop.to; + } + const columnCount = tableMeta?.columnCount || 1; + const itemHeight = tableMeta?.itemHeight || 0; + const rowIndex = Math.floor(initialTop.to / columnCount); + return rowIndex * itemHeight; + } + return 0; + } + if (!initialTop) return 0; if (initialTop.type === 'offset') { @@ -270,6 +286,7 @@ export interface ItemGridListProps { } const BaseItemGridList = ({ + currentPage, data, enableDrag = true, enableExpansion = false, @@ -687,6 +704,7 @@ const BaseItemGridList = ({