From 8b4c76fb2465402dc48915b965de8a6f9a884795 Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Thu, 24 May 2018 17:38:10 +0200 Subject: [PATCH] Consider required modules when checking for layout definitions in modules Fixes: #11156. --- src/tex2lyx/tex2lyx.cpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/tex2lyx/tex2lyx.cpp b/src/tex2lyx/tex2lyx.cpp index 8ae6073e01..89589ef706 100644 --- a/src/tex2lyx/tex2lyx.cpp +++ b/src/tex2lyx/tex2lyx.cpp @@ -386,13 +386,25 @@ bool checkModule(string const & name, bool command) add = true; } if (add) { - FileName layout_file = libFileSearch("layouts", module, "module"); - if (textclass.read(layout_file, TextClass::MODULE)) { - used_modules.push_back(module); - // speed up further searches: - // the module does not need to be checked anymore. - modules.erase(it); - return true; + vector v; + LayoutModuleList mods; + // addModule is necessary in order to catch required modules + // as well (see #11156) + if (!addModule(module, baseClass, mods, v)) + return false; + for (auto const & mod : mods) { + if (!used_modules.moduleCanBeAdded(mod, &baseClass)) + return false; + FileName layout_file = libFileSearch("layouts", mod, "module"); + if (textclass.read(layout_file, TextClass::MODULE)) { + used_modules.push_back(mod); + // speed up further searches: + // the module does not need to be checked anymore. + ModuleMap::iterator const it = modules.find(mod); + if (it != modules.end()) + modules.erase(it); + return true; + } } } } -- 2.39.5