Merge pull request #15721 from Snuffleupagus/issue-15714

Remove the overflowing text special-case from `scrollIntoView` (issue 15714)
This commit is contained in:
Jonas Jenwald 2022-11-22 14:51:02 +01:00 committed by GitHub
commit a0db81723b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -109,8 +109,8 @@ class OutputScale {
* @param {Object} spot - An object with optional top and left properties, * @param {Object} spot - An object with optional top and left properties,
* specifying the offset from the top left edge. * specifying the offset from the top left edge.
* @param {boolean} [scrollMatches] - When scrolling search results into view, * @param {boolean} [scrollMatches] - When scrolling search results into view,
* ignore elements that either: Contains marked content identifiers, * ignore elements that contain marked content identifiers.
* or have the CSS-rule `overflow: hidden;` set. The default value is `false`. * The default value is `false`.
*/ */
function scrollIntoView(element, spot, scrollMatches = false) { function scrollIntoView(element, spot, scrollMatches = false) {
// Assuming offsetParent is available (it's not available when viewer is in // Assuming offsetParent is available (it's not available when viewer is in
@ -126,9 +126,7 @@ function scrollIntoView(element, spot, scrollMatches = false) {
while ( while (
(parent.clientHeight === parent.scrollHeight && (parent.clientHeight === parent.scrollHeight &&
parent.clientWidth === parent.scrollWidth) || parent.clientWidth === parent.scrollWidth) ||
(scrollMatches && (scrollMatches && parent.classList.contains("markedContent"))
(parent.classList.contains("markedContent") ||
getComputedStyle(parent).overflow === "hidden"))
) { ) {
offsetY += parent.offsetTop; offsetY += parent.offsetTop;
offsetX += parent.offsetLeft; offsetX += parent.offsetLeft;