namespace lyx {
-
LastFilesSection::LastFilesSection(unsigned int num) :
default_num_last_files(4),
absolute_max_last_files(100)
LastFiles::iterator it = find(lastfiles.begin(), lastfiles.end(), file);
if (it != lastfiles.end())
lastfiles.erase(it);
- lastfiles.push_front(file);
+ lastfiles.insert(lastfiles.begin(), file);
if (lastfiles.size() > num_lastfiles)
lastfiles.pop_back();
}
void LastOpenedSection::add(FileName const & file, bool active)
{
LastOpenedFile lof(file, active);
+ // check if file is already recorded (this can happen
+ // with multiple buffer views). We do only record each
+ // file once, since we cannot restore multiple views
+ // currently, we even crash in some cases (see #9483).
+ // FIXME: Add session support for multiple views of
+ // the same buffer (split-view etc.).
+ for (size_t i = 0; i < lastopened.size(); ++i) {
+ if (lastopened[i].file_name == file)
+ return;
+ }
lastopened.push_back(lof);
}
void BookmarksSection::write(ostream & os) const
{
os << '\n' << sec_bookmarks << '\n';
- for (size_t i = 1; i <= max_bookmarks; ++i) {
+ for (size_t i = 0; i <= max_bookmarks; ++i) {
if (isValid(i))
os << i << ", "
<< bookmarks[i].bottom_pit << ", "
{
// locate the session file
// note that the session file name 'session' is hard-coded
- session_file = FileName(addName(package().user_support().absFilename(), "session"));
+ session_file = FileName(addName(package().user_support().absFileName(), "session"));
//
readFile();
}