diff --git a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx
index 035dc188..085c7aa0 100644
--- a/apps/readest-app/src/app/reader/components/FoliateViewer.tsx
+++ b/apps/readest-app/src/app/reader/components/FoliateViewer.tsx
@@ -400,10 +400,11 @@ const FoliateViewer: React.FC<{
const rightMargin = insets.right + moreRightInset;
const bottomMargin = (showBottomFooter ? insets.bottom : viewInsets.bottom) + moreBottomInset;
const leftMargin = insets.left + moreLeftInset;
+ const viewMargins = viewSettings.showMarginsOnScroll && viewSettings.scrolled;
- viewRef.current?.renderer.setAttribute('margin-top', `${topMargin}px`);
+ viewRef.current?.renderer.setAttribute('margin-top', `${viewMargins ? 0 : topMargin}px`);
viewRef.current?.renderer.setAttribute('margin-right', `${rightMargin}px`);
- viewRef.current?.renderer.setAttribute('margin-bottom', `${bottomMargin}px`);
+ viewRef.current?.renderer.setAttribute('margin-bottom', `${viewMargins ? 0 : bottomMargin}px`);
viewRef.current?.renderer.setAttribute('margin-left', `${leftMargin}px`);
viewRef.current?.renderer.setAttribute('gap', `${viewSettings.gapPercent}%`);
if (viewSettings.scrolled) {
@@ -482,6 +483,8 @@ const FoliateViewer: React.FC<{
viewState?.ttsEnabled,
]);
+ const showViewMargins = viewSettings?.showMarginsOnScroll && viewSettings?.scrolled;
+
return (
<>
diff --git a/apps/readest-app/src/components/settings/LayoutPanel.tsx b/apps/readest-app/src/components/settings/LayoutPanel.tsx
index 52bb2459..94087640 100644
--- a/apps/readest-app/src/components/settings/LayoutPanel.tsx
+++ b/apps/readest-app/src/components/settings/LayoutPanel.tsx
@@ -66,6 +66,7 @@ const LayoutPanel: React.FC = ({ bookKey, onRegisterRese
const [showHeader, setShowHeader] = useState(viewSettings.showHeader);
const [showFooter, setShowFooter] = useState(viewSettings.showFooter);
const [showBarsOnScroll, setShowBarsOnScroll] = useState(viewSettings.showBarsOnScroll);
+ const [showMarginsOnScroll, setShowMarginsOnScroll] = useState(viewSettings.showMarginsOnScroll);
const [showRemainingTime, setShowRemainingTime] = useState(viewSettings.showRemainingTime);
const [showRemainingPages, setShowRemainingPages] = useState(viewSettings.showRemainingPages);
const [showProgressInfo, setShowProgressInfo] = useState(viewSettings.showProgressInfo);
@@ -103,6 +104,7 @@ const LayoutPanel: React.FC = ({ bookKey, onRegisterRese
showRemainingTime: setShowRemainingTime,
showRemainingPages: setShowRemainingPages,
showProgressInfo: setShowProgressInfo,
+ showMarginsOnScroll: setShowMarginsOnScroll,
});
};
@@ -311,6 +313,11 @@ const LayoutPanel: React.FC = ({ bookKey, onRegisterRese
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [showBarsOnScroll]);
+ useEffect(() => {
+ saveViewSettings(envConfig, bookKey, 'showMarginsOnScroll', showMarginsOnScroll, false, false);
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, [showMarginsOnScroll]);
+
useEffect(() => {
saveViewSettings(envConfig, bookKey, 'showRemainingTime', showRemainingTime, false, false);
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -597,6 +604,15 @@ const LayoutPanel: React.FC = ({ bookKey, onRegisterRese
max={9999}
step={50}
/>
+
+ {_('Apply also in Scrolled Mode')}
+ setShowMarginsOnScroll(!showMarginsOnScroll)}
+ />
+
diff --git a/apps/readest-app/src/services/constants.ts b/apps/readest-app/src/services/constants.ts
index 18ec335a..0dc17aea 100644
--- a/apps/readest-app/src/services/constants.ts
+++ b/apps/readest-app/src/services/constants.ts
@@ -218,6 +218,7 @@ export const DEFAULT_VIEW_CONFIG: ViewConfig = {
showRemainingTime: false,
showRemainingPages: false,
showProgressInfo: true,
+ showMarginsOnScroll: false,
progressStyle: 'fraction',
};
diff --git a/apps/readest-app/src/types/book.ts b/apps/readest-app/src/types/book.ts
index 29451d29..e384352d 100644
--- a/apps/readest-app/src/types/book.ts
+++ b/apps/readest-app/src/types/book.ts
@@ -185,6 +185,7 @@ export interface ViewConfig {
showRemainingPages: boolean;
showProgressInfo: boolean;
showBarsOnScroll: boolean;
+ showMarginsOnScroll: boolean;
progressStyle: 'percentage' | 'fraction';
}