From d42891cfada602cb1ab5a74abe79ad70eff42d33 Mon Sep 17 00:00:00 2001 From: AJ Slater Date: Wed, 7 Oct 2026 19:34:25 -0700 Subject: [PATCH] Reader: keys meant for a dialog no longer drive the reader Pressing Escape to close the metadata or Match Review dialog also closed the book, and arrow keys, space, j/k and the other shortcuts paged or changed settings underneath an open dialog. The reader's three document keyup listeners only bailed out on the auth store's isAuthDialogOpen flag. That misses Escape for every dialog, auth dialogs included: Vuetify closes an overlay on Escape keydown and moves focus back to its activator, so by keyup the dialog flag is already false and the keyup target is the toolbar button, outside any overlay. Checked in a real browser: event.target.closest(".v-overlay") at keyup misses whenever the dialog was opened from a visible activator. useReaderKeyUp decides on keydown instead. A capture-phase keydown listener records each key pressed inside a .v-overlay (capture so a dialog that stops keydown still counts; repeats are ignored so a held Escape stays with the dialog), and the keyup listener skips those keys and any keyup whose own target is inside an overlay. All three reader listeners use it. This covers the auth dialogs too, so the isAuthDialogOpen getter, which had no other users, is gone. Co-Authored-By: Claude Opus 5.5 --- NEWS.md | 3 + .../reader/drawer/reader-settings-scope.vue | 8 +- .../toolbars/nav/reader-toolbar-nav.vue | 9 +- .../toolbars/top/reader-toolbar-top.vue | 9 +- .../src/components/reader/use-reader-keyup.js | 49 ++++++ frontend/src/stores/auth.js | 8 - frontend/tests/unit/use-reader-keyup.test.js | 149 ++++++++++++++++++ 7 files changed, 207 insertions(+), 28 deletions(-) create mode 100644 frontend/src/components/reader/use-reader-keyup.js create mode 100644 frontend/tests/unit/use-reader-keyup.test.js diff --git a/NEWS.md b/NEWS.md index 77f102bb5..23a3ac8dc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -11,6 +11,9 @@ border-radius: 128px; - Features - Online tagging matches to review show a toolbar Review button and a tab-title count instead of popping up a dialog. +- Fixes + - Escape in a reader dialog no longer closes the book, and keys typed in a + dialog no longer turn pages. ## v2.5.3 diff --git a/frontend/src/components/reader/drawer/reader-settings-scope.vue b/frontend/src/components/reader/drawer/reader-settings-scope.vue index b4388d710..c69b0fddf 100644 --- a/frontend/src/components/reader/drawer/reader-settings-scope.vue +++ b/frontend/src/components/reader/drawer/reader-settings-scope.vue @@ -58,9 +58,9 @@