From: Vladimír Vondruš Date: Mon, 29 Jan 2018 12:45:09 +0000 (+0100) Subject: doxygen: prevent page scroll (and layout jumps) on showing search. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=05163a6d2bb1dd2b809ce36a5f2139b127f97ba1;p=blog.git doxygen: prevent page scroll (and layout jumps) on showing search. --- diff --git a/doxygen/search.js b/doxygen/search.js index 064028ac..66da5acc 100644 --- a/doxygen/search.js +++ b/doxygen/search.js @@ -346,6 +346,12 @@ function selectResult(event) { /* istanbul ignore next */ function showSearch() { window.location.hash = '#search'; + + /* Prevent accidental scrolling of the body, prevent page layout jumps */ + let scrolledBodyWidth = document.body.offsetWidth; + document.body.style.overflow = 'hidden'; + document.body.style.paddingRight = (document.body.offsetWidth - scrolledBodyWidth) + 'px'; + document.getElementById('search-input').value = ''; document.getElementById('search-input').focus(); document.getElementById('search-results').style.display = 'none'; @@ -358,6 +364,11 @@ function showSearch() { function hideSearch() { window.location.hash = '#!'; window.history.pushState('', '', window.location.pathname); + + /* Restore scrollbar, prevent page layout jumps */ + document.body.style.overflow = 'auto'; + document.body.style.paddingRight = '0'; + return false; }