diff --git a/CMakeLists.txt b/CMakeLists.txt index 708cebef6b..e153fce677 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,7 +82,7 @@ message(STATUS "Configuring OpenMW...") set(OPENMW_VERSION_MAJOR 0) set(OPENMW_VERSION_MINOR 49) set(OPENMW_VERSION_RELEASE 0) -set(OPENMW_LUA_API_REVISION 74) +set(OPENMW_LUA_API_REVISION 75) set(OPENMW_POSTPROCESSING_API_REVISION 2) set(OPENMW_VERSION_COMMITHASH "") diff --git a/apps/openmw/mwlua/uibindings.cpp b/apps/openmw/mwlua/uibindings.cpp index 677a51a887..bc5581eb74 100644 --- a/apps/openmw/mwlua/uibindings.cpp +++ b/apps/openmw/mwlua/uibindings.cpp @@ -160,26 +160,31 @@ namespace MWLua else return LuaUtil::toLuaIndex(index); }; - layersTable["insertAfter"] = [context]( - std::string_view afterName, std::string_view name, const sol::object& opt) { + layersTable["insertAfter"] = [context](std::string afterName, std::string_view name, const sol::object& opt) { LuaUi::Layer::Options options; options.mInteractive = LuaUtil::getValueOrDefault(LuaUtil::getFieldOrNil(opt, "interactive"), true); - size_t index = LuaUi::Layer::indexOf(afterName); - if (index == LuaUi::Layer::count()) - throw std::logic_error(std::string("Layer not found")); - index++; context.mLuaManager->addAction( - [=, name = std::string(name)]() { LuaUi::Layer::insert(index, name, options); }, "Insert UI layer"); + [=]() { + size_t index = LuaUi::Layer::indexOf(afterName); + if (index == LuaUi::Layer::count()) + throw std::logic_error( + Misc::StringUtils::format("Couldn't insert after non-existent layer %s", afterName)); + LuaUi::Layer::insert(index + 1, name, options); + }, + "Insert after UI layer"); }; - layersTable["insertBefore"] = [context]( - std::string_view beforename, std::string_view name, const sol::object& opt) { + layersTable["insertBefore"] = [context](std::string beforeName, std::string_view name, const sol::object& opt) { LuaUi::Layer::Options options; options.mInteractive = LuaUtil::getValueOrDefault(LuaUtil::getFieldOrNil(opt, "interactive"), true); - size_t index = LuaUi::Layer::indexOf(beforename); - if (index == LuaUi::Layer::count()) - throw std::logic_error(std::string("Layer not found")); context.mLuaManager->addAction( - [=, name = std::string(name)]() { LuaUi::Layer::insert(index, name, options); }, "Insert UI layer"); + [=]() { + size_t index = LuaUi::Layer::indexOf(beforeName); + if (index == LuaUi::Layer::count()) + throw std::logic_error( + Misc::StringUtils::format("Couldn't insert before non-existent layer %s", beforeName)); + LuaUi::Layer::insert(index, name, options); + }, + "Insert before UI layer"); }; sol::table layers = LuaUtil::makeReadOnly(layersTable); sol::table layersMeta = layers[sol::metatable_key];