]> git.lyx.org Git - features.git/commitdiff
Consider required modules when checking for layout definitions in modules
authorJuergen Spitzmueller <spitz@lyx.org>
Thu, 24 May 2018 15:38:10 +0000 (17:38 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Thu, 24 May 2018 15:38:10 +0000 (17:38 +0200)
Fixes: #11156.
src/tex2lyx/tex2lyx.cpp

index 8ae6073e0188c97d626ac167a510db914b7201a0..89589ef706e9a0a16609422038d2547535e97b14 100644 (file)
@@ -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<string> 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;
+                               }
                        }
                }
        }