From 07e2338ed2707dfc8f5b9f5cd6d907abd793ba63 Mon Sep 17 00:00:00 2001 From: Ramon Mi Date: Fri, 6 Mar 2026 10:37:19 +0800 Subject: [PATCH] pdf/epub: shift focus to main page on Enter key in page selector --- src/common/components/reader-ui.js | 1 + src/common/components/toolbar.js | 9 +++++++++ src/common/reader.js | 1 + 3 files changed, 11 insertions(+) diff --git a/src/common/components/reader-ui.js b/src/common/components/reader-ui.js index 57b8cfbe6..cb06196d8 100644 --- a/src/common/components/reader-ui.js +++ b/src/common/components/reader-ui.js @@ -154,6 +154,7 @@ const ReaderUI = React.forwardRef((props, ref) => { onNavigateToPreviousPage={props.onNavigateToPreviousPage} onNavigateToNextPage={props.onNavigateToNextPage} onChangePageNumber={props.onChangePageNumber} + onFocusView={props.onFocusView} onChangePageIndex={props.onChangePageIndex} onChangeTool={props.onChangeTool} onOpenColorContextMenu={props.onOpenColorContextMenu} diff --git a/src/common/components/toolbar.js b/src/common/components/toolbar.js index 660b6bd34..ee1a2d1a2 100644 --- a/src/common/components/toolbar.js +++ b/src/common/components/toolbar.js @@ -29,6 +29,7 @@ import IconLoading from '../../../res/icons/16/loading.svg'; function Toolbar(props) { const pageInputRef = useRef(); + const skipNextPageNumberBlurRef = useRef(false); const { platform } = useContext(ReaderContext); const { l10n } = useLocalization(); @@ -64,11 +65,19 @@ function Toolbar(props) { function handlePageNumberKeydown(event) { if (event.key === 'Enter') { + event.preventDefault(); + event.stopPropagation(); props.onChangePageNumber(event.target.value); + skipNextPageNumberBlurRef.current = true; + setTimeout(() => props.onFocusView?.(), 0); } } function handlePageNumberBlur(event) { + if (skipNextPageNumberBlurRef.current) { + skipNextPageNumberBlurRef.current = false; + return; + } if (event.target.value != (props.pageLabel ?? (props.pageIndex + 1))) { props.onChangePageNumber(event.target.value); } diff --git a/src/common/reader.js b/src/common/reader.js index 71e0499e4..2076477f1 100644 --- a/src/common/reader.js +++ b/src/common/reader.js @@ -330,6 +330,7 @@ class Reader { onNavigateToPreviousPage={this.navigateToPreviousPage.bind(this)} onNavigateToNextPage={this.navigateToNextPage.bind(this)} onChangePageNumber={(pageNumber, options) => this._lastView.navigate({ pageNumber }, options)} + onFocusView={() => this._lastView.focus()} onChangePageIndex={(pageIndex, options) => this._lastView.navigate({ pageIndex }, options)} onChangeTool={this.setTool.bind(this)} onToggleAppearancePopup={this.toggleAppearancePopup.bind(this)}