diff --git a/res/modules/internal/gui_util.lua b/res/modules/internal/gui_util.lua index 6d24a93a9..3309e94a0 100644 --- a/res/modules/internal/gui_util.lua +++ b/res/modules/internal/gui_util.lua @@ -34,7 +34,7 @@ function gui_util.load_page(query) local filename = file.find(string.format("layouts/pages/%s.xml", name)) if filename then name = file.prefix(filename)..":pages/"..name - gui.load_document(filename, name, args) + gui.load_document(filename, name, args, { app = __vc_app }) return name end end diff --git a/src/logic/scripting/lua/libs/libgui.cpp b/src/logic/scripting/lua/libs/libgui.cpp index 4d1506e23..cb98de7d7 100644 --- a/src/logic/scripting/lua/libs/libgui.cpp +++ b/src/logic/scripting/lua/libs/libgui.cpp @@ -1111,6 +1111,16 @@ static int l_gui_load_document(lua::State* L) { ); auto document = documentPtr.get(); engine->getAssets()->store(std::move(documentPtr), alias); + + // namespace extension + if (lua::istable(L, 4)) { + if (lua::get_from(L, "table", "merge")) { + lua::pushenv(L, *document->getEnvironment()); + lua::pushvalue(L, 4); + lua::call(L, 2, 0); + lua::pop(L); + } + } scripting::on_ui_open(document, {args}); return 0; }