]> git.lyx.org Git - lyx.git/blobdiff - src/TextClassList.cpp
adjust
[lyx.git] / src / TextClassList.cpp
index aee1144668182f85c9e28504738a433817de6bae..708b1ac534dcf0ecb3b16ccaeea5b6b15e58213c 100644 (file)
@@ -66,11 +66,12 @@ TextClassList::numberOfClass(string const & textclass) const
 TextClass const &
 TextClassList::operator[](textclass_type textclass) const
 {
-       classlist_[textclass].load();
-       if (textclass < classlist_.size())
-               return classlist_[textclass];
-       else
+       if (textclass >= classlist_.size())
                return classlist_[0];
+       
+       //FIXME I don't believe the following line is actually necessary (rgh)
+       classlist_[textclass].load();
+       return classlist_[textclass];
 }
 
 
@@ -164,17 +165,29 @@ bool TextClassList::read()
        }
        LYXERR(Debug::TCLASS) << "End of parsing of textclass.lst" << endl;
 
-       if (classlist_.empty()) {
+       // lyx will start with an empty classlist_, but only reconfigure is allowed
+       // in this case. This gives users a second chance to configure lyx if
+       // initial configuration fails. (c.f. bug 2829)
+       if (classlist_.empty())
                lyxerr << "TextClassList::Read: no textclasses found!"
                       << endl;
-               return false;
-       }
-       // Ok everything loaded ok, now sort the list.
-       sort(classlist_.begin(), classlist_.end(), less_textclass_avail_desc());
+       else 
+               // Ok everything loaded ok, now sort the list.
+               sort(classlist_.begin(), classlist_.end(), less_textclass_avail_desc());
        return true;
 }
 
 
+void TextClassList::reset(textclass_type const textclass) {
+       if (textclass >= classlist_.size())
+               return;
+       TextClass const & tc = classlist_[textclass];
+       TextClass tmpl(tc.name(), tc.latexname(), tc.description(), 
+                      tc.isTeXClassAvailable());
+       classlist_[textclass] = tmpl;
+}
+
+
 std::pair<bool, textclass_type> const
 TextClassList::addTextClass(std::string const & textclass, std::string const & path)
 {