Просмотр исходного кода

Adjust scroll behavior in review panel to account for wrapped lines (#24029)

GitOrigin-RevId: 748f7ffcdd2d0c83132b43de99b10f598227f6b0
Domagoj Kriskovic 1 год назад
Родитель
Сommit
08882c63df

+ 12 - 1
services/web/frontend/js/features/review-panel-new/components/review-panel-entry.tsx

@@ -94,9 +94,20 @@ export const ReviewPanelEntry: FC<{
 
           // scroll to line (centered)
           const blockInfo = view.lineBlockAt(position)
+          const coordsAtPos = view.coordsAtPos(position)
+          const coordsAtLineStart = view.coordsAtPos(blockInfo.from)
+          let wrappedLineOffset = 0
+          if (coordsAtPos !== null && coordsAtLineStart !== null) {
+            wrappedLineOffset = coordsAtPos.top - coordsAtLineStart.top
+          }
+
           const editorHeight = view.scrollDOM.getBoundingClientRect().height
           view.scrollDOM.scrollTo({
-            top: blockInfo.top - editorHeight / 2 + blockInfo.height,
+            top:
+              blockInfo.top -
+              editorHeight / 2 +
+              view.defaultLineHeight +
+              wrappedLineOffset,
             behavior: 'smooth',
           })
         })