From: Bo Peng Date: Wed, 5 Dec 2007 22:28:16 +0000 (+0000) Subject: Avoid loading local layout file multiple times X-Git-Tag: 1.6.10~7039 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=f1821946dc98602996dc2d79eea0f1e1a20d38e2;p=lyx.git Avoid loading local layout file multiple times git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@21983 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/TextClassList.cpp b/src/TextClassList.cpp index 02d065df66..558eae4770 100644 --- a/src/TextClassList.cpp +++ b/src/TextClassList.cpp @@ -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 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); }