@@ -138,6 +138,22 @@ function getSearchElement() {
138
138
}
139
139
}
140
140
141
+ function showSearchResults ( search ) {
142
+ if ( search === null || typeof search === 'undefined' ) {
143
+ search = getSearchElement ( ) ;
144
+ }
145
+ addClass ( main , "hidden" ) ;
146
+ removeClass ( search , "hidden" ) ;
147
+ }
148
+
149
+ function hideSearchResults ( search ) {
150
+ if ( search === null || typeof search === 'undefined' ) {
151
+ search = getSearchElement ( ) ;
152
+ }
153
+ addClass ( search , "hidden" ) ;
154
+ removeClass ( main , "hidden" ) ;
155
+ }
156
+
141
157
// used for special search precedence
142
158
var TY_PRIMITIVE = itemTypes . indexOf ( "primitive" ) ;
143
159
var TY_KEYWORD = itemTypes . indexOf ( "keyword" ) ;
@@ -169,8 +185,7 @@ function getSearchElement() {
169
185
if ( ev !== null && search && ! hasClass ( search , "hidden" ) && ev . newURL ) {
170
186
// This block occurs when clicking on an element in the navbar while
171
187
// in a search.
172
- addClass ( search , "hidden" ) ;
173
- removeClass ( main , "hidden" ) ;
188
+ hideSearchResults ( search ) ;
174
189
var hash = ev . newURL . slice ( ev . newURL . indexOf ( "#" ) + 1 ) ;
175
190
if ( browserSupportsHistoryApi ( ) ) {
176
191
history . replaceState ( hash , "" , "?search=#" + hash ) ;
@@ -324,16 +339,14 @@ function getSearchElement() {
324
339
}
325
340
326
341
function handleEscape ( ev ) {
327
- debugger ;
328
342
var help = getHelpElement ( ) ;
329
343
var search = getSearchElement ( ) ;
330
344
hideModal ( ) ;
331
345
if ( hasClass ( help , "hidden" ) === false ) {
332
346
displayHelp ( false , ev , help ) ;
333
347
} else if ( hasClass ( search , "hidden" ) === false ) {
334
348
ev . preventDefault ( ) ;
335
- addClass ( search , "hidden" ) ;
336
- removeClass ( main , "hidden" ) ;
349
+ hideSearchResults ( search ) ;
337
350
document . title = titleBeforeSearch ;
338
351
}
339
352
defocusSearchBar ( ) ;
@@ -1265,8 +1278,7 @@ function getSearchElement() {
1265
1278
}
1266
1279
dst = dst [ 0 ] ;
1267
1280
if ( window . location . pathname === dst . pathname ) {
1268
- addClass ( getSearchElement ( ) , "hidden" ) ;
1269
- removeClass ( main , "hidden" ) ;
1281
+ hideSearchResults ( ) ;
1270
1282
document . location . href = dst . href ;
1271
1283
}
1272
1284
} ;
@@ -1341,8 +1353,6 @@ function getSearchElement() {
1341
1353
e . preventDefault ( ) ;
1342
1354
} else if ( e . which === 16 ) { // shift
1343
1355
// Does nothing, it's just to avoid losing "focus" on the highlighted element.
1344
- } else if ( e . which === 27 ) { // escape
1345
- handleEscape ( e ) ;
1346
1356
} else if ( actives [ currentTab ] . length > 0 ) {
1347
1357
removeClass ( actives [ currentTab ] [ 0 ] , "highlighted" ) ;
1348
1358
}
@@ -1492,10 +1502,9 @@ function getSearchElement() {
1492
1502
"</div><div id=\"results\">" +
1493
1503
ret_others [ 0 ] + ret_in_args [ 0 ] + ret_returned [ 0 ] + "</div>" ;
1494
1504
1495
- addClass ( main , "hidden" ) ;
1496
1505
var search = getSearchElement ( ) ;
1497
- removeClass ( search , "hidden" ) ;
1498
1506
search . innerHTML = output ;
1507
+ showSearchResults ( search ) ;
1499
1508
var tds = search . getElementsByTagName ( "td" ) ;
1500
1509
var td_width = 0 ;
1501
1510
if ( tds . length > 0 ) {
@@ -1700,13 +1709,7 @@ function getSearchElement() {
1700
1709
if ( browserSupportsHistoryApi ( ) ) {
1701
1710
history . replaceState ( "" , window . currentCrate + " - Rust" , "?search=" ) ;
1702
1711
}
1703
- if ( hasClass ( main , "content" ) ) {
1704
- removeClass ( main , "hidden" ) ;
1705
- }
1706
- var search_c = getSearchElement ( ) ;
1707
- if ( hasClass ( search_c , "content" ) ) {
1708
- addClass ( search_c , "hidden" ) ;
1709
- }
1712
+ hideSearchResults ( ) ;
1710
1713
} else {
1711
1714
searchTimeout = setTimeout ( search , 500 ) ;
1712
1715
}
@@ -1742,19 +1745,8 @@ function getSearchElement() {
1742
1745
// Store the previous <title> so we can revert back to it later.
1743
1746
var previousTitle = document . title ;
1744
1747
1745
- window . onpopstate = function ( e ) {
1748
+ window . addEventListener ( "popstate" , function ( e ) {
1746
1749
var params = getQueryStringParams ( ) ;
1747
- // When browsing back from search results the main page
1748
- // visibility must be reset.
1749
- if ( ! params . search ) {
1750
- if ( hasClass ( main , "content" ) ) {
1751
- removeClass ( main , "hidden" ) ;
1752
- }
1753
- var search_c = getSearchElement ( ) ;
1754
- if ( hasClass ( search_c , "content" ) ) {
1755
- addClass ( search_c , "hidden" ) ;
1756
- }
1757
- }
1758
1750
// Revert to the previous title manually since the History
1759
1751
// API ignores the title parameter.
1760
1752
document . title = previousTitle ;
@@ -1766,18 +1758,21 @@ function getSearchElement() {
1766
1758
// perform the search. This will empty the bar if there's
1767
1759
// nothing there, which lets you really go back to a
1768
1760
// previous state with nothing in the bar.
1769
- if ( params . search ) {
1761
+ if ( params . search && params . search . length > 0 ) {
1770
1762
search_input . value = params . search ;
1763
+ // Some browsers fire "onpopstate" for every page load
1764
+ // (Chrome), while others fire the event only when actually
1765
+ // popping a state (Firefox), which is why search() is
1766
+ // called both here and at the end of the startSearch()
1767
+ // function.
1768
+ search ( e ) ;
1771
1769
} else {
1772
1770
search_input . value = "" ;
1771
+ // When browsing back from search results the main page
1772
+ // visibility must be reset.
1773
+ hideSearchResults ( ) ;
1773
1774
}
1774
- // Some browsers fire "onpopstate" for every page load
1775
- // (Chrome), while others fire the event only when actually
1776
- // popping a state (Firefox), which is why search() is
1777
- // called both here and at the end of the startSearch()
1778
- // function.
1779
- search ( ) ;
1780
- } ;
1775
+ } ) ;
1781
1776
}
1782
1777
search ( ) ;
1783
1778
}
@@ -2523,9 +2518,9 @@ function getSearchElement() {
2523
2518
}
2524
2519
2525
2520
function putBackSearch ( search_input ) {
2526
- if ( search_input . value !== "" ) {
2527
- addClass ( main , "hidden" ) ;
2528
- removeClass ( getSearchElement ( ) , "hidden" ) ;
2521
+ var search = getSearchElement ( ) ;
2522
+ if ( search_input . value !== "" && hasClass ( search , "hidden" ) ) {
2523
+ showSearchResults ( search ) ;
2529
2524
if ( browserSupportsHistoryApi ( ) ) {
2530
2525
history . replaceState ( search_input . value ,
2531
2526
"" ,
@@ -2542,10 +2537,9 @@ function getSearchElement() {
2542
2537
2543
2538
var params = getQueryStringParams ( ) ;
2544
2539
if ( params && params . search ) {
2545
- addClass ( main , "hidden" ) ;
2546
2540
var search = getSearchElement ( ) ;
2547
- removeClass ( search , "hidden" ) ;
2548
2541
search . innerHTML = "<h3 style=\"text-align: center;\">Loading search results...</h3>" ;
2542
+ showSearchResults ( search ) ;
2549
2543
}
2550
2544
2551
2545
var sidebar_menu = document . getElementsByClassName ( "sidebar-menu" ) [ 0 ] ;
0 commit comments