PDF viewer: a single tap while reading exits the document to a full-screen single-page view
- Lenguaje dominante
- Kotlin
- Estrellas
- 5.6k
- Forks
- 2k
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 102
Descripción
### ⚠️ 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`.
Guía de contribución
Línea de trabajo
Comienza siguiendo el flujo del clic en PreviewPdfAdapter.kt, PreviewPdfFragment.kt y PreviewPdfViewModel.kt, empezando por el OnClickListener de toda la página del adaptador. Usa los pasos de reproducción para comparar el comportamiento de los gestos y la navegación antes y después del cambio. Se considera completado cuando un solo toque mientras se lee no abre inesperadamente la vista de página independiente a pantalla completa y se conserva la posición de lectura.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- android, kotlin
- Área
- mobile-dev
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Activo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 72/100