[webkit-changes] [WebKit/WebKit] 622b90: [UnifiedPDF] Annotation hover and interaction is b...
Simon Fraser
noreply at github.com
Wed Feb 14 07:05:58 PST 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 622b90f2c44db97d10326a6970b96588b7394705
https://github.com/WebKit/WebKit/commit/622b90f2c44db97d10326a6970b96588b7394705
Author: Simon Fraser <simon.fraser at apple.com>
Date: 2024-02-14 (Wed, 14 Feb 2024)
Changed paths:
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h
M Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm
Log Message:
-----------
[UnifiedPDF] Annotation hover and interaction is broken in rotated pages
https://bugs.webkit.org/show_bug.cgi?id=269344
rdar://122929753
Reviewed by Tim Horton.
The transform math in `documentSpaceToPageSpaceTransform()` was wrong, resulting in hit-testing
of annotations in rotated pages being wrong.
The page bounds vended by PDFDocumentLayout are normalized, so we can't use them for coordinate
conversion. We need to go back to the original page crop boxes. Clarify this by renaming
`boundsForPageAtIndex()` to `layoutBoundsForPageAtIndex()` since it is normalized, and contains
the layout offset of the page.
Then have PDFDocumentLayout store the original crop box per page. Internally, it computes
an AffineTransform from page rotation and crop box, and we use that and some coordinate flipping
to convert points.
Remove the FloatRect conversion functions on UnifiedPDFPlugin that I just added, because
they were wrong, and unused.
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/PDFDocumentLayout.mm:
(WebKit::PDFDocumentLayout::updateLayout):
(WebKit::PDFDocumentLayout::layoutSingleColumn):
(WebKit::PDFDocumentLayout::layoutTwoUpColumn):
(WebKit::PDFDocumentLayout::layoutBoundsForPageAtIndex const):
(WebKit::PDFDocumentLayout::toPageTransform const):
(WebKit::PDFDocumentLayout::documentPointToPDFPagePoint const):
(WebKit::PDFDocumentLayout::pdfPagePointToDocumentPoint const):
(WebKit::PDFDocumentLayout::boundsForPageAtIndex const): Deleted.
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.h:
* Source/WebKit/WebProcess/Plugins/PDF/UnifiedPDF/UnifiedPDFPlugin.mm:
(WebKit::UnifiedPDFPlugin::updatePageBackgroundLayers):
(WebKit::UnifiedPDFPlugin::pageCoverageForRect const):
(WebKit::UnifiedPDFPlugin::scaleForActualSize const):
(WebKit::UnifiedPDFPlugin::heightForPage const):
(WebKit::UnifiedPDFPlugin::pageIndexForDocumentPoint const):
(WebKit::UnifiedPDFPlugin::convertFromDocumentToPage const):
(WebKit::UnifiedPDFPlugin::convertFromPageToDocument const):
(WebKit::documentSpaceToPageSpaceTransform): Deleted.
Canonical link: https://commits.webkit.org/274625@main
More information about the webkit-changes
mailing list