]> git.lyx.org Git - lyx.git/blobdiff - src/TextClassList.cpp
fix a visual cursor edge-case:
[lyx.git] / src / TextClassList.cpp
index ea0bfbc447fa187b70a5652e8ffbc5d362f199e7..e1f3a27f5774d814cf8d0d6a68f38dda24e25683 100644 (file)
 
 #include "TextClassList.h"
 #include "TextClass.h"
-#include "support/debug.h"
 #include "Lexer.h"
 
+#include "support/debug.h"
+#include "support/FileName.h"
 #include "support/filetools.h"
 
 #include <boost/bind.hpp>
@@ -33,7 +34,7 @@ using boost::regex;
 using boost::smatch;
 
 // Gets textclass number from name
-pair<bool, textclass_type> const
+pair<bool, TextClassIndex> const
 TextClassList::numberOfClass(string const & textclass) const
 {
        ClassList::const_iterator cit =
@@ -43,14 +44,24 @@ TextClassList::numberOfClass(string const & textclass) const
                             textclass));
 
        return cit != classlist_.end() ?
-               make_pair(true, textclass_type(cit - classlist_.begin())) :
-               make_pair(false, textclass_type(0));
+               make_pair(true, TextClassIndex(cit - classlist_.begin())) :
+               make_pair(false, TextClassIndex(0));
 }
 
 
 // Gets a textclass structure from number
 TextClass const &
-TextClassList::operator[](textclass_type textclass) const
+TextClassList::operator[](TextClassIndex textclass) const
+{
+       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];
+}
+
+TextClass & TextClassList::at(TextClassIndex textclass)
 {
        if (textclass >= classlist_.size())
                return classlist_[0];
@@ -84,7 +95,7 @@ public:
 bool TextClassList::read()
 {
        Lexer lex(0, 0);
-       support::FileName const real_file = libFileSearch("", "textclass.lst");
+       FileName const real_file = libFileSearch("", "textclass.lst");
        LYXERR(Debug::TCLASS, "Reading textclasses from `" << real_file << '\'');
 
        if (real_file.empty()) {
@@ -163,7 +174,8 @@ bool TextClassList::read()
 }
 
 
-void TextClassList::reset(textclass_type const textclass) {
+void TextClassList::reset(TextClassIndex const & textclass)
+{
        if (textclass >= classlist_.size())
                return;
        TextClass const & tc = classlist_[textclass];
@@ -173,7 +185,7 @@ void TextClassList::reset(textclass_type const textclass) {
 }
 
 
-pair<bool, textclass_type> const
+pair<bool, TextClassIndex> const
 TextClassList::addTextClass(string const & textclass, string const & path)
 {
        // only check for textclass.layout file, .cls can be anywhere in $TEXINPUTS
@@ -203,7 +215,7 @@ TextClassList::addTextClass(string const & textclass, string const & path)
                                        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 =
+                               pair<bool, lyx::TextClassIndex> pp =
                                        textclasslist.numberOfClass(textclass);
                                // only layouts from the same directory are considered to be identical.
                                if (pp.first && classlist_[pp.second].description() == tmpl.description())
@@ -214,7 +226,7 @@ TextClassList::addTextClass(string const & textclass, string const & path)
                }
        }
        // If .layout is not in local directory, or an invalid layout is found, return false
-       return make_pair(false, textclass_type(0));
+       return make_pair(false, TextClassIndex(0));
 }
 
 
@@ -222,7 +234,7 @@ TextClassList::addTextClass(string const & textclass, string const & path)
 TextClassList textclasslist;
 
 
-textclass_type defaultTextclass()
+TextClassIndex defaultTextclass()
 {
        // We want to return the article class. if `first' is
        // true in the returned pair, then `second' is the textclass