fix for engine selector size when changing languages

This commit is contained in:
DennisSchiefer 2012-08-31 14:24:35 +01:00
parent d64fb6781c
commit 716e5ed6b0

View File

@ -68,20 +68,52 @@ selectorChange: function(id, value) {
// replace selector options with new names // replace selector options with new names
selectorRenameOptions: function(id, options) { selectorRenameOptions: function(id, options) {
var select = document.getElementById(id); var select = document.getElementById(id);
var select_options = select.getElementsByTagName("option");
var styledSelect = document.getElementById("styled-select-"+id); var styledSelect = document.getElementById("styled-select-"+id);
// fill dropdown menu with new option names // create new dropdown menu
for(var i = 0; i < select_options.length; i++) { var new_select = document.createElement("select");
select_options[i].childNodes[0].nodeValue = options[i].display; new_select.id = id;
new_select.className = select.className;
new_select.onchange = select.onchange;
if(select_options[i].selected == true) // fill new dropdown menu
styledSelect.childNodes[0].nodeValue = options[i].display; var selected_display = "";
for(var i=0, size=options.length; i<size; i++) {
var option=document.createElement("option");
option.innerHTML = options[i].display;
option.value = options[i].value;
new_select.appendChild(option);
if( options[i].value == select.value )
selected_display = options[i].display;
} }
new_select.value = select.value;
// resize visible dropdown menu as needed // switch old with new dropdown menu
styledSelect.style.width = (select.offsetWidth-2)+"px"; select.parentNode.insertBefore(new_select, select);
styledSelect.style.height = (select.offsetHeight)+"px"; // clientHeight gives the height of the opened dropbox! select.parentNode.removeChild(select);
// change styled dropdown menu size & language
styledSelect.childNodes[0].nodeValue = selected_display;
styledSelect.style.width = (new_select.offsetWidth-2)+"px";
styledSelect.style.height = (new_select.offsetHeight)+"px";
// // old variant without creating a new dropdown menu (works in current browsers, but not in older FF or IE)
// var select = document.getElementById(id);
// var select_options = select.getElementsByTagName("option");
// var styledSelect = document.getElementById("styled-select-"+id);
//
// // fill dropdown menu with new option names
// for(var i = 0; i < select_options.length; i++) {
// select_options[i].childNodes[0].nodeValue = options[i].display;
//
// if(select_options[i].selected == true)
// styledSelect.childNodes[0].nodeValue = options[i].display;
// }
//
// // resize visible dropdown menu as needed
// styledSelect.style.width = (select.offsetWidth-2)+"px";
// styledSelect.style.height = (select.offsetHeight)+"px"; // clientHeight gives the height of the opened dropbox!
} }
}); });