فهرست منبع

Fix beamer PDF preview scroll drift on recompile (#32077)

GitOrigin-RevId: 6f15671ba7f7944446e48136b775dea7e5c9b34a
Copilot 6 ماه پیش
والد
کامیت
1dffe20f05
1فایلهای تغییر یافته به همراه14 افزوده شده و 2 حذف شده
  1. 14 2
      services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.ts

+ 14 - 2
services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.ts

@@ -161,11 +161,23 @@ export default class PDFJSWrapper {
 
   // get the current page, offset and page size
   get currentPosition() {
-    const pageIndex = this.viewer.currentPageNumber - 1
+    const containerRect = this.container.getBoundingClientRect()
+
+    let pageIndex = this.viewer.currentPageNumber - 1
+    for (let i = pageIndex; i >= 0; i--) {
+      const pageView = this.viewer.getPageView(i)
+      if (!pageView?.div) continue
+      const pageRect = pageView.div.getBoundingClientRect()
+      if (pageRect.bottom < containerRect.top) {
+        pageIndex = i + 1
+        break
+      }
+      pageIndex = i
+    }
+
     const pageView = this.viewer.getPageView(pageIndex)
     const pageRect = pageView.div.getBoundingClientRect()
 
-    const containerRect = this.container.getBoundingClientRect()
     const dy = containerRect.top - pageRect.top
     const dx = containerRect.left - pageRect.left
     const [left, top] = pageView.viewport.convertToPdfPoint(dx, dy)