nextcloud / nextcloud/android

PDF viewer: a single tap while reading exits the document to a full-screen single-page view

Offen
#17,531 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
0. Needs triage
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.