Skip to content

Commit

Permalink
Fix serverlist not beeing escaped correctly
Browse files Browse the repository at this point in the history
Always use address for server
Fix first (empty) element beeing selected after deleting last world
  • Loading branch information
sapier authored and kwolekr committed Jul 8, 2013
1 parent f419f66 commit 39d0314
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 19 deletions.
24 changes: 9 additions & 15 deletions builtin/mainmenu.lua
Expand Up @@ -52,12 +52,6 @@ function render_favourite(spec)
details = details .. " "
end

if spec.port ~= nil then
text = text .. ":" .. spec.port:trim()
else
text = text .. ":??"
end

return text
end

Expand Down Expand Up @@ -119,6 +113,8 @@ function cleanup_path(temppath)
return temppath
end

--------------------------------------------------------------------------------

function menu.set_texture(identifier,gamedetails)
local texture_set = false
if menu.texturepack ~= nil then
Expand Down Expand Up @@ -696,10 +692,7 @@ function tabbuilder.handle_multiplayer_buttons(fields)
end

if event.typ == "CHG" then
local address = menu.favorites[event.index].name
if address == nil then
address = menu.favorites[event.index].address
end
local address = menu.favorites[event.index].address
local port = menu.favorites[event.index].port

if address ~= nil and
Expand Down Expand Up @@ -1137,8 +1130,7 @@ function tabbuilder.tab_multiplayer()
retval = retval .. "," .. render_favourite(menu.favorites[i])
end
end

print("cfav: " .. dump(menu.fav_selected))

if menu.fav_selected ~= nil then
retval = retval .. ";" .. menu.fav_selected .. "]"
else
Expand Down Expand Up @@ -1181,9 +1173,10 @@ function tabbuilder.tab_server()
retval = retval .. "," .. menu.worldlist[i].name ..
" \\[" .. menu.worldlist[i].gameid .. "\\]"
end
retval = retval .. ";" .. index .. "]"
else
retval = retval .. ";0]"
end

retval = retval .. ";" .. index .. "]"

return retval
end
Expand Down Expand Up @@ -1213,7 +1206,8 @@ end
function tabbuilder.tab_singleplayer()
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
end

Expand Down
8 changes: 5 additions & 3 deletions builtin/mainmenu_helper.lua
Expand Up @@ -77,9 +77,11 @@ function fs_escape_string(text)
text = newtext
end

text = text:gsub("%[","\\%[")
text = text:gsub("]","\\]")
text = text:gsub(";","\\;")
text = string.gsub(text,"\\","\\\\")
text = string.gsub(text,"%]","\\]")
text = string.gsub(text,"%[","\\[")
text = string.gsub(text,";","\\;")
text = string.gsub(text,",","\\,")
end
return text
end
Expand Down
3 changes: 2 additions & 1 deletion src/guiFormSpecMenu.cpp
Expand Up @@ -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_geom = split(parts[1],',');
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_transparent = "false";

Expand Down Expand Up @@ -1352,6 +1352,7 @@ void GUIFormSpecMenu::parseBox(parserData* data,std::string element) {
}

void GUIFormSpecMenu::parseElement(parserData* data,std::string element) {

//some prechecks
if (element == "")
return;
Expand Down

0 comments on commit 39d0314

Please sign in to comment.