Skip to content

Commit fe0b7cb

Browse files
authored
Merge pull request #199 from Gnathonic/develop
Release v1.5.7
2 parents 189c091 + 0ea39c1 commit fe0b7cb

6 files changed

Lines changed: 42 additions & 7 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# Changelog
22

3+
## [1.5.7] - 2026-03-20
4+
5+
### Fixed
6+
7+
- **Text box dismiss toggles overlay** - Tapping outside an OCR text box to dismiss it in continuous scroll modes no longer toggles the reader overlay
8+
- **Fullscreen leaves invisible menu** - Toggling fullscreen from settings no longer leaves an invisible drawer capturing taps
9+
310
## [1.5.6] - 2026-03-20
411

512
### Fixed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "mokuro-reader",
3-
"version": "1.5.6",
3+
"version": "1.5.7",
44
"private": true,
55
"scripts": {
66
"dev": "vite dev",

src/lib/components/Reader/HorizontalScrollReader.svelte

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@
429429
430430
let isDragging = false;
431431
let wasDrag = false;
432+
let textBoxWasActive = false;
432433
let dragStartX = 0;
433434
let dragStartY = 0;
434435
let dragScrollLeft = 0;
@@ -458,7 +459,10 @@
458459
function handlePointerDown(e: PointerEvent) {
459460
activePointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
460461
461-
if ((e.target as HTMLElement).closest('.textBox')) return;
462+
if ((e.target as HTMLElement).closest('.textBox')) {
463+
textBoxWasActive = true;
464+
return;
465+
}
462466
463467
// TODO: Pinch zoom disabled — targeting causes position loss
464468
// if (activePointers.size === 2) {
@@ -548,9 +552,15 @@
548552
const DOUBLE_TAP_DELAY = 300;
549553
550554
function handleClick(e: MouseEvent) {
551-
if ((e.target as HTMLElement).closest('.textBox')) return;
555+
if ((e.target as HTMLElement).closest('.textBox, button, [role="button"], a')) return;
552556
if (wasDrag) return;
553557
558+
// First tap outside after interacting with a text box dismisses it without toggling
559+
if (textBoxWasActive) {
560+
textBoxWasActive = false;
561+
return;
562+
}
563+
554564
const now = Date.now();
555565
// TODO: Double-tap zoom disabled — targeting causes position loss
556566
// if (now - lastTapTime < DOUBLE_TAP_DELAY) {

src/lib/components/Reader/QuickActions.svelte

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,10 @@
9696
</button>
9797
{/if}
9898
<button
99-
onclick={toggleFullScreen}
99+
onclick={() => {
100+
toggleFullScreen();
101+
open = false;
102+
}}
100103
class="flex h-12 w-12 items-center justify-center rounded-full bg-gray-700 text-gray-300 shadow-lg hover:bg-gray-600 focus:outline-none dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"
101104
aria-label="Toggle fullscreen"
102105
>

src/lib/components/Reader/VerticalScrollReader.svelte

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@
375375
376376
let isDragging = false;
377377
let wasDrag = false;
378+
let textBoxWasActive = false;
378379
let dragStartX = 0;
379380
let dragStartY = 0;
380381
let dragScrollLeft = 0;
@@ -404,7 +405,10 @@
404405
function handlePointerDown(e: PointerEvent) {
405406
activePointers.set(e.pointerId, { x: e.clientX, y: e.clientY });
406407
407-
if ((e.target as HTMLElement).closest('.textBox')) return;
408+
if ((e.target as HTMLElement).closest('.textBox')) {
409+
textBoxWasActive = true;
410+
return;
411+
}
408412
409413
// TODO: Pinch zoom disabled — targeting causes position loss
410414
// if (activePointers.size === 2) {
@@ -496,9 +500,15 @@
496500
const DOUBLE_TAP_DELAY = 300;
497501
498502
function handleClick(e: MouseEvent) {
499-
if ((e.target as HTMLElement).closest('.textBox')) return;
503+
if ((e.target as HTMLElement).closest('.textBox, button, [role="button"], a')) return;
500504
if (wasDrag) return;
501505
506+
// First tap outside after interacting with a text box dismisses it without toggling
507+
if (textBoxWasActive) {
508+
textBoxWasActive = false;
509+
return;
510+
}
511+
502512
const now = Date.now();
503513
// TODO: Double-tap zoom disabled — targeting causes position loss
504514
// if (now - lastTapTime < DOUBLE_TAP_DELAY) {

src/lib/components/Settings/QuickAccess.svelte

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,11 @@
1111
1212
let { open = $bindable(false) }: Props = $props();
1313
14+
function onFullscreen() {
15+
open = false;
16+
toggleFullScreen();
17+
}
18+
1419
function onClose() {
1520
open = false;
1621
navigateBack();
@@ -19,7 +24,7 @@
1924

2025
{#if isReader()}
2126
<div class="flex flex-col gap-2">
22-
<Button color="alternative" onclick={toggleFullScreen}
27+
<Button color="alternative" onclick={onFullscreen}
2328
>Toggle fullscreen <span class="ml-2 text-xs text-gray-500 dark:text-gray-400">(F)</span
2429
></Button
2530
>

0 commit comments

Comments
 (0)