PDF viewer: a single tap while reading exits the document to a full-screen single-page view
- Vorherrschende Sprache
- Kotlin
- Sterne
- 5.6k
- Forks
- 2k
- Ø Merge
- 2 T. 20 Std.
- Gemergte PRs (30 T.)
- 105
Beschreibung
### ⚠️ Before posting ⚠️
- [X] This is a **bug**, not a question or an enhancement.
- [X] I've searched for similar issues and didn't find a duplicate.
- [X] I've written a clear and descriptive title for this issue.
- [X] I agree to follow Nextcloud's Code of Conduct.
### Steps to reproduce
1. Open a multi-page PDF from the Files list (native in-app viewer, not "open with" / browser).
2. Scroll down a few pages.
3. While reading, tap once anywhere on the page (no drag).
4. The app opens a separate full-screen view showing only that single page.
5. Press back → you return to the document but the reading/scroll position is lost (back near the top).
### Expected behaviour
A single tap on the page while reading should not leave the scrollable document, and the reading position must be preserved. Accidental taps are very frequent when reading a long PDF one-handed.
### Actual behaviour
`PreviewPdfAdapter` registers an `OnClickListener` on the whole page view. Any click on a page calls `PreviewPdfViewModel.onClickPage()`, which writes the page bitmap to a temp file and launches `PreviewBitmapActivity` — a separate full-screen activity showing only the tapped page, outside the scrollable `RecyclerView`. Coming back from it drops the reading position.
### Source (current `master`)
- `app/src/main/java/com/owncloud/android/ui/preview/pdf/PreviewPdfAdapter.kt` L33-35 — `binding.root.setOnClickListener { onClickListener(bitmap) }`: whole-page click target, no gesture discrimination.
- `app/src/main/java/com/owncloud/android/ui/preview/pdf/PreviewPdfFragment.kt` L79-92 — click → `viewModel.onClickPage(page)` → observer on `previewImagePath` starts `PreviewBitmapActivity`.
- `app/src/main/java/com/owncloud/android/ui/preview/pdf/PreviewPdfViewModel.kt` L55-61 — `onClickPage()` saves the bitmap to cache and sets `_previewImagePath`.
### Android version
16
### Device brand and model
Xiaomi Poco X7 Pro 5G
### Stock or custom OS?
Stock (Xiaomi HyperOS)
### Nextcloud android app version
34.1.1
### Nextcloud server version
34.0.3
### Using a reverse proxy?
Yes (Traefik) — not relevant, PDF rendering is fully client-side.
### Additional information
The full-screen single-page view appears intended as a "tap to zoom" feature, but bound to a plain click on the entire page it fires on every accidental tap during reading. Possible directions: require a double-tap for the zoom view, shrink the tap target, or at least preserve/restore the `RecyclerView` scroll position when returning from `PreviewBitmapActivity`.
Beitragsleitfaden
Rechercherichtung
Beginne damit, den Klickfluss in PreviewPdfAdapter.kt, PreviewPdfFragment.kt und PreviewPdfViewModel.kt nachzuverfolgen, ausgehend vom OnClickListener des gesamten Seitenbereichs im Adapter. Verwende die Reproduktionsschritte, um das Gestenverhalten und die Navigation vor und nach der Änderung zu vergleichen. Als erledigt gilt die Änderung, wenn ein einzelnes Tippen beim Lesen nicht unerwartet die separate Vollbildseitenansicht öffnet und die Leseposition erhalten bleibt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- android, kotlin
- Bereich
- mobile-dev
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Aktiv
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 72/100