@@ -413,9 +413,9 @@ impl ToJson for Type {
413413 match self . name {
414414 Some ( ref name) => {
415415 let mut data = BTreeMap :: new ( ) ;
416- data. insert ( "name " . to_owned ( ) , name. to_json ( ) ) ;
416+ data. insert ( "n " . to_owned ( ) , name. to_json ( ) ) ;
417417 if let Some ( ref generics) = self . generics {
418- data. insert ( "generics " . to_owned ( ) , generics. to_json ( ) ) ;
418+ data. insert ( "g " . to_owned ( ) , generics. to_json ( ) ) ;
419419 }
420420 Json :: Object ( data)
421421 } ,
@@ -438,8 +438,12 @@ impl ToJson for IndexItemFunctionType {
438438 Json :: Null
439439 } else {
440440 let mut data = BTreeMap :: new ( ) ;
441- data. insert ( "inputs" . to_owned ( ) , self . inputs . to_json ( ) ) ;
442- data. insert ( "output" . to_owned ( ) , self . output . to_json ( ) ) ;
441+ if !self . inputs . is_empty ( ) {
442+ data. insert ( "i" . to_owned ( ) , self . inputs . to_json ( ) ) ;
443+ }
444+ if let Some ( ref output) = self . output {
445+ data. insert ( "o" . to_owned ( ) , output. to_json ( ) ) ;
446+ }
443447 Json :: Object ( data)
444448 }
445449 }
@@ -789,7 +793,8 @@ fn write_shared(cx: &Context,
789793 format ! (
790794r#"var themes = document.getElementById("theme-choices");
791795var themePicker = document.getElementById("theme-picker");
792- themePicker.onclick = function() {{
796+
797+ function switchThemeButtonState() {{
793798 if (themes.style.display === "block") {{
794799 themes.style.display = "none";
795800 themePicker.style.borderBottomRightRadius = "3px";
@@ -800,12 +805,29 @@ themePicker.onclick = function() {{
800805 themePicker.style.borderBottomLeftRadius = "0";
801806 }}
802807}};
808+
809+ function handleThemeButtonsBlur(e) {{
810+ var active = document.activeElement;
811+ var related = e.relatedTarget;
812+
813+ if (active.id !== "themePicker" &&
814+ (!active.parentNode || active.parentNode.id !== "theme-choices") &&
815+ (!related ||
816+ (related.id !== "themePicker" &&
817+ (!related.parentNode || related.parentNode.id !== "theme-choices")))) {{
818+ switchThemeButtonState();
819+ }}
820+ }}
821+
822+ themePicker.onclick = switchThemeButtonState;
823+ themePicker.onblur = handleThemeButtonsBlur;
803824[{}].forEach(function(item) {{
804825 var but = document.createElement('button');
805826 but.innerHTML = item;
806827 but.onclick = function(el) {{
807828 switchTheme(currentTheme, mainTheme, item);
808829 }};
830+ but.onblur = handleThemeButtonsBlur;
809831 themes.appendChild(but);
810832}});"# ,
811833 themes. iter( )
@@ -879,8 +901,8 @@ themePicker.onclick = function() {{
879901 }
880902
881903 fn show_item ( item : & IndexItem , krate : & str ) -> String {
882- format ! ( "{{'crate':'{}','ty':{},'name':'{}','path ':'{}'{}}}" ,
883- krate, item. ty as usize , item. name, item. path,
904+ format ! ( "{{'crate':'{}','ty':{},'name':'{}','desc':'{}','p ':'{}'{}}}" ,
905+ krate, item. ty as usize , item. name, item. desc . replace ( "'" , " \\ '" ) , item . path,
884906 if let Some ( p) = item. parent_idx {
885907 format!( ",'parent':{}" , p)
886908 } else {
@@ -1442,7 +1464,7 @@ impl<'a> Cache {
14421464 ty : item. type_ ( ) ,
14431465 name : item_name. to_string ( ) ,
14441466 path : path. clone ( ) ,
1445- desc : String :: new ( ) ,
1467+ desc : plain_summary_line ( item . doc_value ( ) ) ,
14461468 parent : None ,
14471469 parent_idx : None ,
14481470 search_type : get_index_search_type ( & item) ,
0 commit comments