From 387deecd3147493619ebd3d2aa53167c9e7f6e61 Mon Sep 17 00:00:00 2001 From: hallgren Date: Mon, 19 Mar 2012 00:35:10 +0000 Subject: [PATCH] minibar: don't try to select the most recently used grammar if it isn't in the current grammar list --- src/www/minibar/minibar.js | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/www/minibar/minibar.js b/src/www/minibar/minibar.js index 02c770e83..d52e67881 100644 --- a/src/www/minibar/minibar.js +++ b/src/www/minibar/minibar.js @@ -74,17 +74,27 @@ Minibar.prototype.show_grammarlist=function(grammars) { if(grammars.length>1) { function opt(g) { return option(g,g); } appendChildren(grammar_menu,map(opt,grammars)); - grammar_menu.onchange= - bind(function() { select_grammar(grammar_menu.value); },this); + function pick() { + var grammar_name=grammar_menu.value + if(window.localStorage) + localStorage["gf.minibar.last_grammar"]=grammar_name; + select_grammar(grammar_name); + } + grammar_menu.onchange=bind(pick,this); insertFirst(menubar,button("i",bind(show_grammarinfo,this))) insertFirst(menubar,grammar_menu); insertFirst(menubar,text("Grammar: ")); } if(options.help_url) menubar.appendChild(button("Help",bind(open_help,this))); - var grammar0= options.initial_grammar - || window.localStorage && localStorage["gf.minibar.last_grammar"] - || grammars[0]; + var grammar0=options.initial_grammar + if(!grammar0 && window.localStorage) { + var last_grammar=localStorage["gf.minibar.last_grammar"]; + if(last_grammar) + for(var i in grammars) + if(last_grammar==grammars[i]) grammar0=last_grammar; + } + if(!grammar0) grammar0=grammars[0]; grammar_menu.value=grammar0; select_grammar(grammar0); } @@ -94,8 +104,6 @@ Minibar.prototype.select_grammar=function(grammar_name) { var t=this; //debug("select_grammar "); function change_grammar() { - if(window.localStorage) - localStorage["gf.minibar.last_grammar"]=grammar_name; t.server.grammar_info(bind(t.change_grammar,t)); } t.server.switch_grammar(grammar_name,change_grammar);