From 3dc9deb6e5b41859dcbbe28d1e326d296a5e1bb9 Mon Sep 17 00:00:00 2001 From: Carol Nichols Date: Sun, 31 Aug 2014 17:11:42 -0400 Subject: [PATCH] Make doc search results use tags instead of js for navigating This has the primary advantage of not interfering with browser default behavior for links like being able to cmd/ctrl+click on a result to open the result in a new tab but leave the current page as-is (previous behavior both opened a new tab and changed the current tab's location to the result's) --- src/librustdoc/html/static/main.css | 20 +++++++---- src/librustdoc/html/static/main.js | 54 ++++++++++++----------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/librustdoc/html/static/main.css b/src/librustdoc/html/static/main.css index e41566e07fd..6a7fc907c0b 100644 --- a/src/librustdoc/html/static/main.css +++ b/src/librustdoc/html/static/main.css @@ -218,11 +218,10 @@ nav.sub { } .content .highlighted { - cursor: pointer; color: #000 !important; background-color: #ccc; } -.content .highlighted a { color: #000 !important; } +.content .highlighted a, .content .highlighted span { color: #000 !important; } .content .highlighted.trait { background-color: #fece7e; } .content .highlighted.mod { background-color: #afc6e4; } .content .highlighted.enum { background-color: #b4d1b9; } @@ -335,11 +334,11 @@ a { p a { color: #4e8bca; } p a:hover { text-decoration: underline; } -.content a.trait, .block a.current.trait { color: #ed9603; } -.content a.mod, .block a.current.mod { color: #4d76ae; } -.content a.enum, .block a.current.enum { color: #5e9766; } -.content a.struct, .block a.current.struct { color: #e53700; } -.content a.fn, .block a.current.fn { color: #8c6067; } +.content span.trait, .block a.current.trait { color: #ed9603; } +.content span.mod, .block a.current.mod { color: #4d76ae; } +.content span.enum, .block a.current.enum { color: #5e9766; } +.content span.struct, .block a.current.struct { color: #e53700; } +.content span.fn, .block a.current.fn { color: #8c6067; } .content .fnname { color: #8c6067; } .search-input { @@ -377,6 +376,13 @@ p a:hover { text-decoration: underline; } display: block; } +.search-results a { + display: block; +} + +.content .search-results td:first-child { padding-right: 0; } +.content .search-results td:first-child a { padding-right: 10px; } + #help { background: #e9e9e9; border-radius: 4px; diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js index 7b5d1b7be2f..99cb41d8981 100644 --- a/src/librustdoc/html/static/main.js +++ b/src/librustdoc/html/static/main.js @@ -395,8 +395,8 @@ if (window.location.pathname == dst.pathname) { $('#search').addClass('hidden'); $('#main').removeClass('hidden'); + document.location.href = dst.href; } - document.location.href = dst.href; }).on('mouseover', function() { var $el = $(this); clearTimeout(hoverTimeout); @@ -451,7 +451,7 @@ shown = []; results.forEach(function(item) { - var name, type; + var name, type, href, displayPath; if (shown.indexOf(item) !== -1) { return; @@ -461,43 +461,35 @@ name = item.name; type = itemTypes[item.ty]; - output += ''; - if (type === 'mod') { - output += item.path + - '::' + name + ''; + displayPath = item.path + '::'; + href = rootPath + item.path.replace(/::/g, '/') + '/' + + name + '/index.html'; } else if (type === 'static' || type === 'reexport') { - output += item.path + - '::' + name + ''; + displayPath = item.path + '::'; + href = rootPath + item.path.replace(/::/g, '/') + + '/index.html'; } else if (item.parent !== undefined) { var myparent = item.parent; var anchor = '#' + type + '.' + name; - output += item.path + '::' + myparent.name + - '::' + name + ''; + displayPath = item.path + '::' + myparent.name + '::'; + href = rootPath + item.path.replace(/::/g, '/') + + '/' + itemTypes[myparent.ty] + + '.' + myparent.name + + '.html' + anchor; } else { - output += item.path + - '::' + name + ''; + displayPath = item.path + '::'; + href = rootPath + item.path.replace(/::/g, '/') + + '/' + type + '.' + name + '.html'; } - output += '' + item.desc + - ''; + output += '' + + '' + + displayPath + '' + + name + '' + + '' + + '' + item.desc + + ' '; }); } else { output += 'No results :(