Fix serverlist not beeing escaped correctly

Always use address for server
Fix first (empty) element beeing selected after deleting last world
This commit is contained in:
sapier 2013-07-08 23:45:14 +02:00 committed by kwolekr
parent f419f66546
commit 39d03148e5
3 changed files with 16 additions and 19 deletions

@ -52,12 +52,6 @@ function render_favourite(spec)
details = details .. " " details = details .. " "
end end
if spec.port ~= nil then
text = text .. ":" .. spec.port:trim()
else
text = text .. ":??"
end
return text return text
end end
@ -119,6 +113,8 @@ function cleanup_path(temppath)
return temppath return temppath
end end
--------------------------------------------------------------------------------
function menu.set_texture(identifier,gamedetails) function menu.set_texture(identifier,gamedetails)
local texture_set = false local texture_set = false
if menu.texturepack ~= nil then if menu.texturepack ~= nil then
@ -696,10 +692,7 @@ function tabbuilder.handle_multiplayer_buttons(fields)
end end
if event.typ == "CHG" then if event.typ == "CHG" then
local address = menu.favorites[event.index].name local address = menu.favorites[event.index].address
if address == nil then
address = menu.favorites[event.index].address
end
local port = menu.favorites[event.index].port local port = menu.favorites[event.index].port
if address ~= nil and if address ~= nil and
@ -1137,8 +1130,7 @@ function tabbuilder.tab_multiplayer()
retval = retval .. "," .. render_favourite(menu.favorites[i]) retval = retval .. "," .. render_favourite(menu.favorites[i])
end end
end end
print("cfav: " .. dump(menu.fav_selected))
if menu.fav_selected ~= nil then if menu.fav_selected ~= nil then
retval = retval .. ";" .. menu.fav_selected .. "]" retval = retval .. ";" .. menu.fav_selected .. "]"
else else
@ -1181,9 +1173,10 @@ function tabbuilder.tab_server()
retval = retval .. "," .. menu.worldlist[i].name .. retval = retval .. "," .. menu.worldlist[i].name ..
" \\[" .. menu.worldlist[i].gameid .. "\\]" " \\[" .. menu.worldlist[i].gameid .. "\\]"
end end
retval = retval .. ";" .. index .. "]"
else
retval = retval .. ";0]"
end end
retval = retval .. ";" .. index .. "]"
return retval return retval
end end
@ -1213,7 +1206,8 @@ end
function tabbuilder.tab_singleplayer() function tabbuilder.tab_singleplayer()
local index = engine.setting_get("main_menu_singleplayer_world_idx") local index = engine.setting_get("main_menu_singleplayer_world_idx")
if index == nil then if index == nil or
#menu.filtered_game_list_raw() == 0 then
index = 0 index = 0
end end

@ -77,9 +77,11 @@ function fs_escape_string(text)
text = newtext text = newtext
end end
text = text:gsub("%[","\\%[") text = string.gsub(text,"\\","\\\\")
text = text:gsub("]","\\]") text = string.gsub(text,"%]","\\]")
text = text:gsub(";","\\;") text = string.gsub(text,"%[","\\[")
text = string.gsub(text,";","\\;")
text = string.gsub(text,",","\\,")
end end
return text return text
end end

@ -611,7 +611,7 @@ void GUIFormSpecMenu::parseTextList(parserData* data,std::string element) {
std::vector<std::string> v_pos = split(parts[0],','); std::vector<std::string> v_pos = split(parts[0],',');
std::vector<std::string> v_geom = split(parts[1],','); std::vector<std::string> v_geom = split(parts[1],',');
std::string name = parts[2]; std::string name = parts[2];
std::vector<std::string> items = split(parts[3],','); std::vector<std::string> items = split(parts[3],',',true);
std::string str_initial_selection = ""; std::string str_initial_selection = "";
std::string str_transparent = "false"; std::string str_transparent = "false";
@ -1352,6 +1352,7 @@ void GUIFormSpecMenu::parseBox(parserData* data,std::string element) {
} }
void GUIFormSpecMenu::parseElement(parserData* data,std::string element) { void GUIFormSpecMenu::parseElement(parserData* data,std::string element) {
//some prechecks //some prechecks
if (element == "") if (element == "")
return; return;