]> git.lyx.org Git - features.git/commitdiff
Avoid loading local layout file multiple times
authorBo Peng <bpeng@lyx.org>
Wed, 5 Dec 2007 22:28:16 +0000 (22:28 +0000)
committerBo Peng <bpeng@lyx.org>
Wed, 5 Dec 2007 22:28:16 +0000 (22:28 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21983 a592a061-630c-0410-9148-cb99ea01b6c8

src/TextClassList.cpp

index 02d065df6608fdc914f6dfc1159fa4c031dc5ba2..558eae477005c9616f56fb6aa18f4e7e45d0cdbe 100644 (file)
@@ -209,11 +209,18 @@ TextClassList::addTextClass(std::string const & textclass, std::string const & p
                        if (regex_match(line, sub, reg)) {
                                // returns: whole string, classtype (not used here), first option, description
                                BOOST_ASSERT(sub.size()==4);
-                               // now, add the layout to textclass.
+                               // now, create a TextClass with description containing path information
                                TextClass tmpl(textclass, sub.str(2)==""?textclass:sub.str(2),
                                        sub.str(3) + " <" + path + ">", true);
                                if (lyxerr.debugging(Debug::TCLASS))
                                        tmpl.load(path);
+                               // Do not add this local TextClass to classlist_ if it has
+                               // already been loaded by, for example, a master buffer.
+                               pair<bool, lyx::textclass_type> pp =
+                                       textclasslist.numberOfClass(textclass);
+                               // only layouts from the same directory are considered to be identical.
+                               if (pp.first && classlist_[pp.second].description() == tmpl.description())
+                                       return pp;
                                classlist_.push_back(tmpl);
                                return make_pair(true, classlist_.size() - 1);
                        }