Skip to content

Commit

Permalink
Merge branch 'serializable_readonly' into 'master'
Browse files Browse the repository at this point in the history
Support table-valued settings

See merge request OpenMW/openmw!3917
  • Loading branch information
psi29a committed Oct 28, 2024
2 parents 64fdf72 + ad1c2a0 commit 1349fdb
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
11 changes: 6 additions & 5 deletions components/lua/luastate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -316,12 +316,13 @@ namespace LuaUtil
sol::table meta(lua, sol::create);
meta["t"] = table;
if (strictIndex)
meta["__index"] = lua["createStrictIndexFn"](table);
meta[sol::meta_method::index] = lua["createStrictIndexFn"](table);
else
meta["__index"] = table;
meta["__pairs"] = lua["pairsForReadOnly"];
meta["__ipairs"] = lua["ipairsForReadOnly"];
meta["__len"] = lua["lenForReadOnly"];
meta[sol::meta_method::index] = table;
meta[sol::meta_method::pairs] = lua["pairsForReadOnly"];
meta[sol::meta_method::ipairs] = lua["ipairsForReadOnly"];
meta[sol::meta_method::length] = lua["lenForReadOnly"];
meta[sol::meta_method::type] = "ReadOnlyTable";

lua_newuserdata(luaState, 0);
sol::stack::push(luaState, meta);
Expand Down
10 changes: 5 additions & 5 deletions files/data/scripts/omw/settings/menu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ local function renderGroup(group, global)
sortedSettings[setting.order] = setting
end
for _, setting in ipairs(sortedSettings) do
table.insert(settingLayouts, renderSetting(group, setting, valueSection:get(setting.key), global))
table.insert(settingLayouts, renderSetting(group, setting, valueSection:getCopy(setting.key), global))
end
local settingsContent = ui.content(interlaceSeparator(settingLayouts, spacedLines(1)))

Expand Down Expand Up @@ -288,7 +288,7 @@ local function renderPage(page, options)
table.sort(sortedGroups, pageGroupComparator)
local groupLayouts = {}
for _, pageGroup in ipairs(sortedGroups) do
local group = common.getSection(pageGroup.global, common.groupSectionKey):get(pageGroup.key)
local group = common.getSection(pageGroup.global, common.groupSectionKey):getCopy(pageGroup.key)
if not group then
error(string.format('%s group "%s" was not found', pageGroup.global and 'Global' or 'Player', pageGroup.key))
end
Expand Down Expand Up @@ -360,7 +360,7 @@ end

local function onSettingChanged(global)
return async:callback(function(groupKey, settingKey)
local group = common.getSection(global, common.groupSectionKey):get(groupKey)
local group = common.getSection(global, common.groupSectionKey):getCopy(groupKey)
if not group or not pageOptions[group.page] then return end

local groupElement = groupElements[group.page][group.key]
Expand All @@ -375,7 +375,7 @@ local function onSettingChanged(global)
return
end

local value = common.getSection(global, group.key):get(settingKey)
local value = common.getSection(global, group.key):getCopy(settingKey)
local settingsContent = groupElement.layout.content.settings.content
auxUi.deepDestroy(settingsContent[settingKey]) -- support setting renderers which return UI elements
settingsContent[settingKey] = renderSetting(group, group.settings[settingKey], value, global)
Expand Down Expand Up @@ -404,7 +404,7 @@ local function onGroupRegistered(global, key)
local group = common.getSection(global, common.groupSectionKey):get(group.key)
if not group or not pageOptions[group.page] then return end

local value = common.getSection(global, group.key):get(settingKey)
local value = common.getSection(global, group.key):getCopy(settingKey)

local element = groupElements[group.page][group.key]
local settingsContent = element.layout.content.settings.content
Expand Down

0 comments on commit 1349fdb

Please sign in to comment.