From b37ea01acadaa10a994ac1df6efbe7e86d7acf74 Mon Sep 17 00:00:00 2001 From: nyne Date: Tue, 29 Apr 2025 11:18:59 +0800 Subject: [PATCH] Add an option to disable double tap to zoom. --- lib/foundation/appdata.dart | 1 + lib/pages/reader/gesture.dart | 6 ++++++ lib/pages/reader/images.dart | 1 + lib/pages/reader/reader.dart | 3 +++ lib/pages/settings/reader.dart | 8 ++++++++ 5 files changed, 19 insertions(+) diff --git a/lib/foundation/appdata.dart b/lib/foundation/appdata.dart index 7b1a898..9c1f210 100644 --- a/lib/foundation/appdata.dart +++ b/lib/foundation/appdata.dart @@ -185,6 +185,7 @@ class Settings with ChangeNotifier { 'comicListDisplayMode': 'paging', // paging, continuous 'showPageNumberInReader': true, 'showSingleImageOnFirstPage': false, + 'enableDoubleTapToZoom': true, }; operator [](String key) { diff --git a/lib/pages/reader/gesture.dart b/lib/pages/reader/gesture.dart index 751af23..04a68e9 100644 --- a/lib/pages/reader/gesture.dart +++ b/lib/pages/reader/gesture.dart @@ -152,12 +152,18 @@ class _ReaderGestureDetectorState extends AutomaticGlobalState<_ReaderGestureDet bool _dragInProgress = false; + bool get _enableDoubleTapToZoom => appdata.settings["enableDoubleTapToZoom"]; + void onTapUp(TapUpDetails event) { if (_longPressInProgress) { _longPressInProgress = false; return; } final location = event.globalPosition; + if (!_enableDoubleTapToZoom) { + onTap(location); + return; + } final previousLocation = _previousEvent?.globalPosition; if (previousLocation != null) { if ((location - previousLocation).distanceSquared < diff --git a/lib/pages/reader/images.dart b/lib/pages/reader/images.dart index ba7e54f..fe4be2b 100644 --- a/lib/pages/reader/images.dart +++ b/lib/pages/reader/images.dart @@ -250,6 +250,7 @@ class _GalleryModeState extends State<_GalleryMode> } return PhotoViewGalleryPageOptions.customChild( + childSize: reader.size * 2, controller: photoViewControllers[index], minScale: PhotoViewComputedScale.contained * 1.0, maxScale: PhotoViewComputedScale.covered * 10.0, diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index a199948..6b732ba 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -112,6 +112,9 @@ class _ReaderState extends State @override int get maxPage { + if (images == null) { + return 1; + } if (!showSingleImageOnFirstPage) { return (images!.length / imagesPerPage).ceil(); } else { diff --git a/lib/pages/settings/reader.dart b/lib/pages/settings/reader.dart index cce23e6..3b5744d 100644 --- a/lib/pages/settings/reader.dart +++ b/lib/pages/settings/reader.dart @@ -113,6 +113,14 @@ class _ReaderSettingsState extends State { }, ), ), + _SwitchSetting( + title: 'Double tap to zoom'.tl, + settingKey: 'enableDoubleTapToZoom', + onChanged: () { + setState(() {}); + widget.onChanged?.call('enableDoubleTapToZoom'); + }, + ).toSliver(), _SwitchSetting( title: 'Long press to zoom'.tl, settingKey: 'enableLongPressToZoom',