From 2ce14ce4eb2a9a59bb1f28e6fd78e14f8f5fb31b Mon Sep 17 00:00:00 2001
From: Gregor Parzefall <82708541+grorp@users.noreply.github.com>
Date: Sun, 22 Oct 2023 15:32:14 +0200
Subject: [PATCH] Use hypertext[] for credits so that long lines are wrapped
(#13914)
---
builtin/mainmenu/tab_about.lua | 93 ++++++++++++++++------------------
1 file changed, 43 insertions(+), 50 deletions(-)
diff --git a/builtin/mainmenu/tab_about.lua b/builtin/mainmenu/tab_about.lua
index 2998cf872..c79a498ce 100644
--- a/builtin/mainmenu/tab_about.lua
+++ b/builtin/mainmenu/tab_about.lua
@@ -99,24 +99,17 @@ local previous_contributors = {
}
local function prepare_credits(dest, source)
- for _, s in ipairs(source) do
- -- if there's text inside brackets make it gray-ish
- s = s:gsub("%[.-%]", core.colorize("#aaa", "%1"))
- dest[#dest+1] = s
- end
-end
+ local string = table.concat(source, "\n") .. "\n"
-local function build_hacky_list(items, spacing)
- spacing = spacing or 0.5
- local y = spacing / 2
- local ret = {}
- for _, item in ipairs(items) do
- if item ~= "" then
- ret[#ret+1] = ("label[0,%f;%s]"):format(y, core.formspec_escape(item))
- end
- y = y + spacing
- end
- return table.concat(ret, ""), y
+ local hypertext_escapes = {
+ ["\\"] = "\\\\",
+ ["<"] = "\\<",
+ [">"] = "\\>",
+ }
+ string = string:gsub("[\\<>]", hypertext_escapes)
+ string = string:gsub("%[.-%]", "%1")
+
+ table.insert(dest, string)
end
return {
@@ -127,50 +120,50 @@ return {
local logofile = defaulttexturedir .. "logo.png"
local version = core.get_version()
- local credit_list = {}
- table.insert_all(credit_list, {
- core.colorize("#000", "Dedication of the current release"),
- "The 5.7.0 release is dedicated to the memory of",
- "Minetest developer Jude Melton-Houghton (TurkeyMcMac)",
- "who died on February 1, 2023.",
- "Our thoughts are with his family and friends.",
- "",
- core.colorize("#ff0", fgettext("Core Developers"))
+ local hypertext = {
+ "",
+ "",
+ }
+
+ table.insert_all(hypertext, {
+ "\n",
+ "The 5.7.0 release is dedicated to the memory of\n",
+ "Minetest developer Jude Melton-Houghton (TurkeyMcMac)\n",
+ "who died on February 1, 2023.\n",
+ "Our thoughts are with his family and friends.\n",
+ "\n",
+ "", fgettext_ne("Core Developers"), "\n",
})
- prepare_credits(credit_list, core_developers)
- table.insert_all(credit_list, {
- "",
- core.colorize("#ff0", fgettext("Core Team"))
+ prepare_credits(hypertext, core_developers)
+ table.insert_all(hypertext, {
+ "\n",
+ "", fgettext_ne("Core Team"), "\n",
})
- prepare_credits(credit_list, core_team)
- table.insert_all(credit_list, {
- "",
- core.colorize("#ff0", fgettext("Active Contributors"))
+ prepare_credits(hypertext, core_team)
+ table.insert_all(hypertext, {
+ "\n",
+ "", fgettext_ne("Active Contributors"), "\n",
})
- prepare_credits(credit_list, active_contributors)
- table.insert_all(credit_list, {
- "",
- core.colorize("#ff0", fgettext("Previous Core Developers"))
+ prepare_credits(hypertext, active_contributors)
+ table.insert_all(hypertext, {
+ "\n",
+ "", fgettext_ne("Previous Core Developers"), "\n",
})
- prepare_credits(credit_list, previous_core_developers)
- table.insert_all(credit_list, {
- "",
- core.colorize("#ff0", fgettext("Previous Contributors"))
+ prepare_credits(hypertext, previous_core_developers)
+ table.insert_all(hypertext, {
+ "\n",
+ "", fgettext_ne("Previous Contributors"), "\n",
})
- prepare_credits(credit_list, previous_contributors)
- local credit_fs, scroll_height = build_hacky_list(credit_list)
- -- account for the visible portion
- scroll_height = math.max(0, scroll_height - 6.9)
+ prepare_credits(hypertext, previous_contributors)
+
+ hypertext = table.concat(hypertext):sub(1, -2)
local fs = "image[1.5,0.6;2.5,2.5;" .. core.formspec_escape(logofile) .. "]" ..
"style[label_button;border=false]" ..
"button[0.1,3.4;5.3,0.5;label_button;" ..
core.formspec_escape(version.project .. " " .. version.string) .. "]" ..
"button[1.5,4.1;2.5,0.8;homepage;minetest.net]" ..
- "scroll_container[5.5,0.1;9.5,6.9;scroll_credits;vertical;" ..
- tostring(scroll_height / 1000) .. "]" .. credit_fs ..
- "scroll_container_end[]"..
- "scrollbar[15,0.1;0.4,6.9;vertical;scroll_credits;0]"
+ "hypertext[5.5,0.25;9.75,6.6;credits;" .. minetest.formspec_escape(hypertext) .. "]"
-- Render information
local active_renderer_info = fgettext("Active renderer:") .. " " ..