diff --git a/apps/readest-app/src/app/reader/components/settings/LayoutPanel.tsx b/apps/readest-app/src/app/reader/components/settings/LayoutPanel.tsx index ef73614a..57f01e96 100644 --- a/apps/readest-app/src/app/reader/components/settings/LayoutPanel.tsx +++ b/apps/readest-app/src/app/reader/components/settings/LayoutPanel.tsx @@ -35,6 +35,7 @@ const LayoutPanel: React.FC<{ bookKey: string }> = ({ bookKey }) => { const [maxBlockSize, setMaxBlockSize] = useState(viewSettings.maxBlockSize!); const [writingMode, setWritingMode] = useState(viewSettings.writingMode!); const [overrideLayout, setOverrideLayout] = useState(viewSettings.overrideLayout!); + const [isScrolledMode, setScrolledMode] = useState(viewSettings.scrolled!); useEffect(() => { viewSettings.paragraphMargin = paragraphMargin; @@ -201,12 +202,40 @@ const LayoutPanel: React.FC<{ bookKey: string }> = ({ bookKey }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [overrideLayout]); + useEffect(() => { + viewSettings!.scrolled = isScrolledMode; + getView(bookKey)?.renderer.setAttribute('flow', isScrolledMode ? 'scrolled' : 'paginated'); + getView(bookKey)?.renderer.setAttribute( + 'max-inline-size', + `${getMaxInlineSize(viewSettings)}px`, + ); + getView(bookKey)?.renderer.setStyles?.(getStyles(viewSettings!)); + setViewSettings(bookKey, viewSettings!); + if (isFontLayoutSettingsGlobal) { + settings.globalViewSettings.scrolled = isScrolledMode; + setSettings(settings); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isScrolledMode]); + const langCode = getBookLangCode(bookData.bookDoc?.metadata?.language); const mightBeRTLBook = langCode === 'zh' || langCode === 'ja' || langCode === 'ko' || langCode === ''; return (