nextcloud / nextcloud/android

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

Open
#17,531 3 comments 0 reactions 0 assignees View on GitHub
0. Needs triage
Dominant language
Kotlin
Stars
5.6k
Forks
2k
Avg merge
2d 18h
Merged PRs (30d)
92

Description

### ⚠️ 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`.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the click flow in PreviewPdfAdapter.kt, PreviewPdfFragment.kt, and PreviewPdfViewModel.kt, beginning with the adapter's whole-page OnClickListener. Use the reproduction steps to compare gesture behavior and navigation before and after the change. Done means a single tap while reading does not unexpectedly open the separate full-screen page view and the reading position is preserved.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile-dev
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
72/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.