yenru0
5fd4113081
image_viewer: Add anchored zoom and pan to the PDF viewer
...
The PDF viewport lacked the interaction set the image view already had:
ctrl/cmd+wheel and pinch zoomed nothing (plain wheel just scrolled),
middle-drag did not pan, and the zoom actions only applied image-mode
pan math, which does nothing for the scroll-based PDF layout.
- Ctrl/cmd+wheel zooms around the cursor: the native scroll handler on
the same element runs first in the bubble phase, so the applied wheel
delta is undone before anchoring the zoom.
- Pinch zooms around the touch point; zoom actions anchor the viewport
center.
- Middle-drag pans, keeping left-drag for text selection and pen input.
- extract_document_details now falls back to a single mock US-Letter
page when no native libpdfium is present, mirroring the mock
rasterizer, so PDFs open on machines without the engine instead of
failing with an image-format error.
- The annotation mouse test gates on native pdfium like the channel
order test, since mock pages carry no text.
Anchor math lives in pdf_anchored_scroll_y with unit tests, and a
gpui integration test drives real wheel/drag events to assert the
document point under the cursor stays put while zooming.
2026-10-03 20:33:08 +09:00
..
2026-09-21 12:59:56 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-18 18:44:49 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-20 10:08:48 +00:00
2026-09-16 21:41:45 +00:00
2026-08-19 14:32:19 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-09 22:29:52 +00:00
2026-08-28 11:51:00 +00:00
2026-08-31 11:58:50 +00:00
2026-09-29 09:24:34 +09:00
2026-09-03 14:38:23 +00:00
2026-02-25 08:12:04 +01:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 17:57:36 +00:00
2026-09-17 08:49:31 +00:00
2026-09-18 19:53:58 +00:00
2026-09-29 09:24:34 +09:00
2026-06-05 10:32:57 +00:00
2026-09-15 09:58:45 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 13:08:53 +00:00
2026-09-18 18:44:49 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-26 14:33:13 +00:00
2026-08-20 10:08:48 +00:00
2026-04-24 10:29:51 +00:00
2026-09-17 08:49:31 +00:00
2026-05-13 23:35:10 +00:00
2026-09-08 07:12:28 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 22:05:47 +00:00
2026-08-09 22:29:52 +00:00
2026-09-29 09:24:34 +09:00
2026-09-07 19:01:41 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-06-05 19:24:28 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 09:24:15 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-07 19:01:41 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:32:07 +09:00
2026-09-18 10:40:43 +00:00
2026-08-27 20:11:28 +00:00
2026-09-18 19:53:58 +00:00
2026-02-19 18:57:49 +01:00
2026-09-07 15:18:49 +00:00
2026-07-30 12:59:16 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 14:25:14 +00:00
2026-09-21 11:17:46 +00:00
2026-08-20 10:08:48 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-22 00:11:23 +00:00
2026-09-20 08:26:45 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 02:25:54 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 19:24:38 +00:00
2026-09-17 16:37:56 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-10-03 20:33:08 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-20 10:08:48 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-16 16:03:30 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-21 17:57:36 +00:00
2026-09-17 08:49:31 +00:00
2026-08-27 16:21:41 +00:00
2026-09-23 10:16:19 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-26 14:33:13 +00:00
2026-09-17 01:46:02 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-16 16:02:58 +00:00
2026-09-09 13:47:28 +00:00
2026-09-16 16:04:13 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-02 18:21:25 +00:00
2026-09-21 15:15:54 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-16 16:04:24 +00:00
2026-08-20 10:08:48 +00:00
2026-09-08 21:44:06 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-18 18:44:49 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-28 03:28:04 +00:00
2026-09-12 19:03:48 +00:00
2026-09-17 08:49:31 +00:00
2026-09-22 22:46:11 +09:00
2026-10-03 20:33:08 +09:00
2026-09-16 16:03:09 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-06-13 05:21:05 +00:00
2026-09-29 09:24:34 +09:00
2026-09-07 19:01:41 +00:00
2026-09-18 10:40:43 +00:00
2026-08-28 11:51:00 +00:00
2026-09-17 08:49:31 +00:00
2026-09-09 14:55:56 +00:00
2026-07-23 22:46:06 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-23 19:51:29 +09:00
2026-09-23 01:37:58 +09:00
2026-09-17 08:49:31 +00:00
2026-09-18 10:24:51 +00:00
2026-09-07 19:01:41 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-11 09:13:44 +00:00
2026-09-29 09:24:34 +09:00
2026-09-18 10:50:41 +00:00
2026-08-20 10:08:48 +00:00
2026-08-31 11:41:34 +00:00
2026-08-24 10:41:04 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-21 13:08:53 +00:00
2026-09-17 08:49:31 +00:00
2026-06-23 09:33:47 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-07-20 11:17:43 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-08-20 10:08:48 +00:00
2026-09-17 08:49:31 +00:00
2026-08-28 03:28:04 +00:00
2026-09-17 08:49:31 +00:00
2026-09-09 09:09:25 +00:00
2026-09-17 08:49:31 +00:00
2026-09-19 01:57:44 +00:00
2026-09-19 01:57:44 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 16:10:07 +00:00
2026-09-21 15:37:37 +00:00
2026-08-28 18:05:57 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-07-29 20:59:24 +00:00
2026-08-27 16:21:41 +00:00
2026-09-22 13:17:50 +09:00
2026-05-28 19:43:30 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-21 02:24:26 +00:00
2026-09-17 08:49:31 +00:00
2026-09-15 15:27:26 +00:00
2026-09-17 08:49:31 +00:00
2026-09-10 06:33:43 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 09:17:09 +00:00
2026-09-29 09:24:34 +09:00
2026-09-29 09:24:34 +09:00
2026-09-20 19:09:14 +00:00
2026-09-07 19:01:41 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-29 09:38:20 +09:00
2026-09-29 09:24:34 +09:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00
2026-09-17 08:49:31 +00:00