From 61551d2356ea5f93ba3e921a1c4ab9cca88fdbda Mon Sep 17 00:00:00 2001 From: Gerd Wachsmuth Date: Thu, 1 Apr 2021 11:58:53 +0200 Subject: [PATCH] Fix: Viewport coords normalized w.r.t. full page The coordinates in Viewport.rePos are normalized on the full page. In two functions within pageview.cpp, these were treated as coordinates on the cropped page. CCBUG: 198427 This partially fixes the bug 198427 in the case that the cropping of the target pages (and the pages around the target) is known at the time the link is clicked. That is, it works if - One uses 'Trim To Selection' - One uses 'Trim To Margin' and has already viewed at the target page(s). In the case that the cropping of the page at the target is unknown, we still end up at the wrong position. --- autotests/data/pdf_with_internal_links.pdf | Bin 0 -> 60899 bytes autotests/data/pdf_with_internal_links.tex | 9 +++++ autotests/parttest.cpp | 44 +++++++++++++++++++++ part/pageview.cpp | 18 +++++++-- 4 files changed, 67 insertions(+), 4 deletions(-) create mode 100644 autotests/data/pdf_with_internal_links.pdf create mode 100644 autotests/data/pdf_with_internal_links.tex diff --git a/autotests/data/pdf_with_internal_links.pdf b/autotests/data/pdf_with_internal_links.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fdbe6263437fde706da12f12edc2a6dfa6317e03 GIT binary patch literal 60899 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 focCYfptFmylZ(e^a0=jNfindChild(QStringLiteral("view_trim_mode")); + KToggleAction *cropAction = cropMenu->menu()->findChild(QStringLiteral("view_trim_selection")); + + part.widget()->resize(600, 400); + part.widget()->show(); + QVERIFY(QTest::qWaitForWindowExposed(part.widget())); + + // wait for pixmap + QTRY_VERIFY(part.m_document->page(0)->hasPixmap(part.m_pageView)); + + // Activate "Trim Margins" + cropAction->trigger(); + + const int width = part.m_pageView->viewport()->width(); + const int height = part.m_pageView->viewport()->height(); + + const int mouseStartY = height * 0.2; + const int mouseEndY = height * 0.8; + const int mouseStartX = width * 0.2; + const int mouseEndX = width * 0.8; + + // Trim the page + simulateMouseSelection(mouseStartX, mouseStartY, mouseEndX, mouseEndY, part.m_pageView->viewport()); + + // Click a link + const QPoint click(width * 0.2, height * 0.2); + QTest::mouseMove(part.m_pageView->viewport(), click); + QTest::mouseClick(part.m_pageView->viewport(), Qt::LeftButton, Qt::NoModifier, click); + + QTRY_VERIFY2_WITH_TIMEOUT(qAbs(part.m_document->viewport().rePos.normalizedY - 0.167102333237) < 0.01, qPrintable(QString("We are at %1").arg(part.m_document->viewport().rePos.normalizedY)), 500); + + // Deactivate "Trim Margins" + cropAction->trigger(); +} + } // namespace Okular int main(int argc, char *argv[]) diff --git a/part/pageview.cpp b/part/pageview.cpp index bfd576780..88e28a46d 100644 --- a/part/pageview.cpp +++ b/part/pageview.cpp @@ -3590,13 +3590,19 @@ QPoint PageView::viewportToContentArea(const Okular::DocumentViewport &vp) const QPoint c {r.left(), r.top()}; if (vp.rePos.enabled) { + // Convert the coordinates of vp to normalized coordinates on the cropped page. + // This is a no-op if the page isn't cropped. + const Okular::NormalizedRect &crop = d->items[vp.pageNumber]->crop(); + const double normalized_on_crop_x = (vp.rePos.normalizedX - crop.left) / (crop.right - crop.left); + const double normalized_on_crop_y = (vp.rePos.normalizedY - crop.top) / (crop.bottom - crop.top); + if (vp.rePos.pos == Okular::DocumentViewport::Center) { - c.rx() += qRound(normClamp(vp.rePos.normalizedX, 0.5) * (double)r.width()); - c.ry() += qRound(normClamp(vp.rePos.normalizedY, 0.0) * (double)r.height()); + c.rx() += qRound(normClamp(normalized_on_crop_x, 0.5) * (double)r.width()); + c.ry() += qRound(normClamp(normalized_on_crop_y, 0.0) * (double)r.height()); } else { // TopLeft - c.rx() += qRound(normClamp(vp.rePos.normalizedX, 0.0) * (double)r.width() + viewport()->width() / 2.0); - c.ry() += qRound(normClamp(vp.rePos.normalizedY, 0.0) * (double)r.height() + viewport()->height() / 2.0); + c.rx() += qRound(normClamp(normalized_on_crop_x, 0.0) * (double)r.width() + viewport()->width() / 2.0); + c.ry() += qRound(normClamp(normalized_on_crop_y, 0.0) * (double)r.height() + viewport()->height() / 2.0); } } else { // exact repositioning disabled, align page top margin with viewport top border by default @@ -4552,8 +4558,12 @@ void PageView::slotRequestVisiblePixmaps(int newValue) nearPageNumber = i->pageNumber(); minDistance = distance; if (geometry.height() > 0 && geometry.width() > 0) { + // Compute normalized coordinates w.r.t. cropped page focusedX = (viewportCenterX - (double)geometry.left()) / (double)geometry.width(); focusedY = (viewportCenterY - (double)geometry.top()) / (double)geometry.height(); + // Convert to normalized coordinates w.r.t. full page (no-op if not cropped) + focusedX = i->crop().left + focusedX * i->crop().width(); + focusedY = i->crop().top + focusedY * i->crop().height(); } } }