diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2017-11-11 13:38:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-11 13:38:06 +0100 |
| commit | fec24adea8a16525b7e091e2abc7b7a67b1c84d0 (patch) | |
| tree | b3edca6f730e434f55ed8adf12cae47f5ebf030b /src | |
| parent | cb71247861f427f7f58f28face744285782ab6f5 (diff) | |
| parent | 0d898998b1c67cef158fb8cec474162a205fc7c8 (diff) | |
| download | rust-fec24adea8a16525b7e091e2abc7b7a67b1c84d0.tar.gz rust-fec24adea8a16525b7e091e2abc7b7a67b1c84d0.zip | |
Rollup merge of #45812 - GuillaumeGomez:links-and-search, r=QuietMisdreavus
Fix navbar click while in a search Fixes #45790.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/html/static/main.js | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 1d9bfa260bf..ecafb88c2b0 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -52,14 +52,14 @@ var start = elemClass.indexOf(className); if (start == -1) { return false; - } else if (elemClass.length == className.length) { + } else if (elemClass.length === className.length) { return true; } else { - if (start > 0 && elemClass[start - 1] != ' ') { + if (start > 0 && elemClass[start - 1] !== ' ') { return false; } var end = start + className.length; - if (end < elemClass.length && elemClass[end] != ' ') { + if (end < elemClass.length && elemClass[end] !== ' ') { return false; } return true; @@ -122,6 +122,7 @@ } function highlightSourceLines(ev) { + var search = document.getElementById("search"); var i, from, to, match = window.location.hash.match(/^#?(\d+)(?:-(\d+))?$/); if (match) { from = parseInt(match[1], 10); @@ -145,6 +146,17 @@ for (i = from; i <= to; ++i) { addClass(document.getElementById(i), 'line-highlighted'); } + } else if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) { + addClass(search, "hidden"); + removeClass(document.getElementById("main"), "hidden"); + var hash = ev.newURL.slice(ev.newURL.indexOf('#') + 1); + if (browserSupportsHistoryApi()) { + history.replaceState(hash, "", "?search=#" + hash); + } + var elem = document.getElementById(hash); + if (elem) { + elem.scrollIntoView(); + } } } highlightSourceLines(null); @@ -1552,6 +1564,22 @@ }); } }); + + var search_input = document.getElementsByClassName("search-input")[0]; + + if (search_input) { + search_input.onfocus = function() { + if (search_input.value !== "") { + addClass(document.getElementById("main"), "hidden"); + removeClass(document.getElementById("search"), "hidden"); + if (browserSupportsHistoryApi()) { + history.replaceState(search_input.value, + "", + "?search=" + encodeURIComponent(search_input.value)); + } + } + }; + } }()); // Sets the focus on the search bar at the top of the page |
