about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2013-09-27 11:06:07 -0700
committerAlex Crichton <alex@alexcrichton.com>2013-09-27 11:06:07 -0700
commitb93678eca55fc6fcd6bfeb8f97613ebc52bc31a7 (patch)
tree2e76db371295a692d8deecb1dbf67cbc4cab3c9b /src
parenta925762c3b1c1f7b3a272b7294c0ec9b4eb4fb6d (diff)
downloadrust-b93678eca55fc6fcd6bfeb8f97613ebc52bc31a7.tar.gz
rust-b93678eca55fc6fcd6bfeb8f97613ebc52bc31a7.zip
rustdoc: Fix search for something on the same page
Diffstat (limited to 'src')
-rw-r--r--src/librustdoc/html/layout.rs3
-rw-r--r--src/librustdoc/html/static/main.js24
2 files changed, 20 insertions, 7 deletions
diff --git a/src/librustdoc/html/layout.rs b/src/librustdoc/html/layout.rs
index 718bacc24fd..ac3e8a07d46 100644
--- a/src/librustdoc/html/layout.rs
+++ b/src/librustdoc/html/layout.rs
@@ -66,7 +66,8 @@ pub fn render<T: fmt::Default, S: fmt::Default>(
         </form>
     </nav>
 
-    <section class=\"content {ty}\">{content}</section>
+    <section id='main' class=\"content {ty}\">{content}</section>
+    <section id='search' class=\"content hidden\">{content}</section>
 
     <section class=\"footer\"></section>
 
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 881149b0dd2..bf9e9ac8027 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -39,9 +39,15 @@
         if (e.keyCode === 188 && $('#help').hasClass('hidden')) { // question mark
             e.preventDefault();
             $('#help').removeClass('hidden');
-        } else if (e.keyCode === 27 && !$('#help').hasClass('hidden')) { // esc
-            e.preventDefault();
-            $('#help').addClass('hidden');
+        } else if (e.keyCode === 27) { // esc
+            if (!$('#help').hasClass('hidden')) {
+                e.preventDefault();
+                $('#help').addClass('hidden');
+            } else if (!$('#search').hasClass('hidden')) {
+                e.preventDefault();
+                $('#search').addClass('hidden');
+                $('#main').removeClass('hidden');
+            }
         } else if (e.keyCode === 83) { // S
             e.preventDefault();
             $('.search-input').focus();
@@ -202,7 +208,13 @@
             var hoverTimeout, $results = $('.search-results .result');
 
             $results.on('click', function () {
-                document.location.href = $(this).find('a').prop('href');
+                var dst = $(this).find('a')[0];
+                console.log(window.location.pathname, dst.pathname);
+                if (window.location.pathname == dst.pathname) {
+                    $('#search').addClass('hidden');
+                    $('#main').removeClass('hidden');
+                }
+                document.location.href = dst.href;
             }).on('mouseover', function () {
                 var $el = $(this);
                 clearTimeout(hoverTimeout);
@@ -277,7 +289,6 @@
                                             '/index.html" class="' + type +
                                             '">' + name + '</a>';
                     } else if (item.parent !== undefined) {
-                        console.log(item);
                         var myparent = allPaths[item.parent];
                         var anchor = '#' + type + '.' + name;
                         output += item.path + '::' + myparent.name +
@@ -308,7 +319,8 @@
             }
 
             output += "</p>";
-            $('.content').html(output);
+            $('#main.content').addClass('hidden');
+            $('#search.content').removeClass('hidden').html(output);
             $('.search-results .desc').width($('.content').width() - 40 -
                     $('.content td:first-child').first().width());
             initSearchNav();