From bab55bafdb8e4f333534f94f8e3a8d1e53301096 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 12 Nov 2025 03:56:40 +0100 Subject: [PATCH] Preserve reader current page on "reader width" change --- CHANGELOG.md | 2 +- src/features/reader/viewer/ReaderViewer.tsx | 1 + .../reader/viewer/hooks/useReaderPreserveScrollPosition.ts | 3 +++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 43d0095d..5a0656ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,7 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). - (**Reader**) Fix mouse drag scrolling inertia effect being locked at 60hz - (**Reader**) Fix mouse cursor drift during drag scroll - (**Reader**) Fix deletion of chapters while reading -- (**Reader**) Fix potential page loss during window resize while using continuous horizontal reading mode +- (**Reader**) Fix potential page loss (continuous horizontal mode window resize, reader width change, page scale change) - (**Extension**) Fix handling obsolete extensions as updatable in case they are marked as having an available update - (**Theme**) Fix loading of fonts defined in themes - (**Reader**) Fix broken scrolling in continuous horizontal reading mode diff --git a/src/features/reader/viewer/ReaderViewer.tsx b/src/features/reader/viewer/ReaderViewer.tsx index 759f1d22..5bf02a05 100644 --- a/src/features/reader/viewer/ReaderViewer.tsx +++ b/src/features/reader/viewer/ReaderViewer.tsx @@ -273,6 +273,7 @@ const BaseReaderViewer = ({ setPageToScrollToIndex, pageScaleMode, shouldStretchPage, + readerWidth, ); useLayoutEffect(() => { diff --git a/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts b/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts index d0e6f28f..e8e39834 100644 --- a/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts +++ b/src/features/reader/viewer/hooks/useReaderPreserveScrollPosition.ts @@ -9,6 +9,7 @@ import { RefObject, useCallback, useEffect, useLayoutEffect, useRef } from 'react'; import { useWindowEvent } from '@mantine/hooks'; import { + IReaderSettingsManga, ReaderPageScaleMode, ReaderStateChapters, ReaderStatePages, @@ -359,6 +360,7 @@ export const useReaderPreserveScrollPosition = ( setPageToScrollToIndex: ReaderStatePages['setPageToScrollToIndex'], pageScaleMode: ReaderPageScaleMode, shouldStretchPage: boolean, + readerWidth: IReaderSettingsManga['readerWidth'], ) => { usePreserveOnInfiniteScrollPreviousChapterInitialRender( scrollElementRef, @@ -375,4 +377,5 @@ export const useReaderPreserveScrollPosition = ( usePreserveOnValueChange(readingMode, currentPageIndex, setPageToScrollToIndex); usePreserveOnValueChange(pageScaleMode, currentPageIndex, setPageToScrollToIndex); usePreserveOnValueChange(shouldStretchPage, currentPageIndex, setPageToScrollToIndex); + usePreserveOnValueChange(readerWidth, currentPageIndex, setPageToScrollToIndex); };