auto merge of #16909 : carols10cents/rust/docs-links, r=alexcrichton

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).

I've done my best to keep the rest of the behavior and the appearance the same-- the whole row still highlights, still has a hand cursor, still moves to the result page with a normal click, arrows+enter still work. If the result is on the current page, the search is simply hidden.

The biggest difference in behavior is that people using tab to navigate through the links will have to hit tab twice for each row, since each cell has its own `a` tag.. I could fix this by switching to `div`s and `span`s instead of a table, but that's potentially more CSS finicky?

The biggest difference in appearance is probably that all the text in the search results is Fira Sans now, instead of just the method name with the rest of the text in Source Serif Pro. I can put this appearance back, but it looks like all links anywhere on the page are Fira Sans. Only the name was in an `a` tag before, but the whole row was ACTING like a link, so I think this is actually more consistent.

[I've pushed these changes to a gh-pages repo](https://carols10cents.github.io/rustdoc-playground/std/index.html?search=t) if you'd like to take a look at the effects; note that I also have my changes for PR #16735 there too so the search results will be sorted differently than on master.
This commit is contained in:
bors 2014-09-04 04:51:05 +00:00
commit 1f49e02d1d
2 changed files with 36 additions and 38 deletions

View file

@ -218,11 +218,10 @@ nav.sub {
} }
.content .highlighted { .content .highlighted {
cursor: pointer;
color: #000 !important; color: #000 !important;
background-color: #ccc; 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.trait { background-color: #fece7e; }
.content .highlighted.mod { background-color: #afc6e4; } .content .highlighted.mod { background-color: #afc6e4; }
.content .highlighted.enum { background-color: #b4d1b9; } .content .highlighted.enum { background-color: #b4d1b9; }
@ -335,11 +334,11 @@ a {
p a { color: #4e8bca; } p a { color: #4e8bca; }
p a:hover { text-decoration: underline; } p a:hover { text-decoration: underline; }
.content a.trait, .block a.current.trait { color: #ed9603; } .content span.trait, .block a.current.trait { color: #ed9603; }
.content a.mod, .block a.current.mod { color: #4d76ae; } .content span.mod, .block a.current.mod { color: #4d76ae; }
.content a.enum, .block a.current.enum { color: #5e9766; } .content span.enum, .block a.current.enum { color: #5e9766; }
.content a.struct, .block a.current.struct { color: #e53700; } .content span.struct, .block a.current.struct { color: #e53700; }
.content a.fn, .block a.current.fn { color: #8c6067; } .content span.fn, .block a.current.fn { color: #8c6067; }
.content .fnname { color: #8c6067; } .content .fnname { color: #8c6067; }
.search-input { .search-input {
@ -377,6 +376,13 @@ p a:hover { text-decoration: underline; }
display: block; 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 { #help {
background: #e9e9e9; background: #e9e9e9;
border-radius: 4px; border-radius: 4px;

View file

@ -395,8 +395,8 @@
if (window.location.pathname == dst.pathname) { if (window.location.pathname == dst.pathname) {
$('#search').addClass('hidden'); $('#search').addClass('hidden');
$('#main').removeClass('hidden'); $('#main').removeClass('hidden');
document.location.href = dst.href;
} }
document.location.href = dst.href;
}).on('mouseover', function() { }).on('mouseover', function() {
var $el = $(this); var $el = $(this);
clearTimeout(hoverTimeout); clearTimeout(hoverTimeout);
@ -451,7 +451,7 @@
shown = []; shown = [];
results.forEach(function(item) { results.forEach(function(item) {
var name, type; var name, type, href, displayPath;
if (shown.indexOf(item) !== -1) { if (shown.indexOf(item) !== -1) {
return; return;
@ -461,43 +461,35 @@
name = item.name; name = item.name;
type = itemTypes[item.ty]; type = itemTypes[item.ty];
output += '<tr class="' + type + ' result"><td>';
if (type === 'mod') { if (type === 'mod') {
output += item.path + displayPath = item.path + '::';
'::<a href="' + rootPath + href = rootPath + item.path.replace(/::/g, '/') + '/' +
item.path.replace(/::/g, '/') + '/' + name + '/index.html';
name + '/index.html" class="' +
type + '">' + name + '</a>';
} else if (type === 'static' || type === 'reexport') { } else if (type === 'static' || type === 'reexport') {
output += item.path + displayPath = item.path + '::';
'::<a href="' + rootPath + href = rootPath + item.path.replace(/::/g, '/') +
item.path.replace(/::/g, '/') + '/index.html';
'/index.html" class="' + type +
'">' + name + '</a>';
} else if (item.parent !== undefined) { } else if (item.parent !== undefined) {
var myparent = item.parent; var myparent = item.parent;
var anchor = '#' + type + '.' + name; var anchor = '#' + type + '.' + name;
output += item.path + '::' + myparent.name + displayPath = item.path + '::' + myparent.name + '::';
'::<a href="' + rootPath + href = rootPath + item.path.replace(/::/g, '/') +
item.path.replace(/::/g, '/') + '/' + itemTypes[myparent.ty] +
'/' + itemTypes[myparent.ty] + '.' + myparent.name +
'.' + myparent.name + '.html' + anchor;
'.html' + anchor +
'" class="' + type +
'">' + name + '</a>';
} else { } else {
output += item.path + displayPath = item.path + '::';
'::<a href="' + rootPath + href = rootPath + item.path.replace(/::/g, '/') +
item.path.replace(/::/g, '/') + '/' + type + '.' + name + '.html';
'/' + type +
'.' + name +
'.html" class="' + type +
'">' + name + '</a>';
} }
output += '</td><td><span class="desc">' + item.desc + output += '<tr class="' + type + ' result"><td>' +
'</span></td></tr>'; '<a href="' + href + '">' +
displayPath + '<span class="' + type + '">' +
name + '</span></a></td><td>' +
'<a href="' + href + '">' +
'<span class="desc">' + item.desc +
'&nbsp;</span></a></td></tr>';
}); });
} else { } else {
output += 'No results :( <a href="https://duckduckgo.com/?q=' + output += 'No results :( <a href="https://duckduckgo.com/?q=' +