X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.h;h=f36730b6bb6f859e2a557d838f3ed7c6b319b4e4;hb=c727c6db7f2dd7f6a727462f5d11964888d0e76e;hp=f682e1e450c194904aa00d69c5d5538d7ecc9a1b;hpb=eaa33dca6def75e9bf48582073c75b256821fd25;p=lyx.git diff --git a/src/session.h b/src/session.h index f682e1e450..f36730b6bb 100644 --- a/src/session.h +++ b/src/session.h @@ -13,7 +13,8 @@ #ifndef SESSION_H #define SESSION_H -#include +#include "support/filename.h" +#include "support/types.h" #include #include @@ -55,7 +56,7 @@ class LastFilesSection : SessionSection { public: /// - typedef std::deque LastFiles; + typedef std::deque LastFiles; public: /// @@ -77,7 +78,7 @@ public: file in the list is popped from the end. @param file the file to insert in the lastfile list. */ - void add(std::string const & file); + void add(support::FileName const & file); private: /// Default number of lastfiles. @@ -103,7 +104,7 @@ class LastOpenedSection : SessionSection { public: /// - typedef std::vector LastOpened; + typedef std::vector LastOpened; public: /// @@ -118,7 +119,7 @@ public: /** add file to lastopened file list @param file filename to add */ - void add(std::string const & file); + void add(support::FileName const & file); /** clear lastopened file list */ @@ -137,7 +138,7 @@ public: typedef boost::tuple FilePos; /// - typedef std::map FilePosMap; + typedef std::map FilePosMap; public: /// @@ -153,12 +154,12 @@ public: @param fname file entry for which to save position information @param pos position of the cursor when the file is closed. */ - void save(std::string const & fname, FilePos pos); + void save(support::FileName const & fname, FilePos pos); /** load saved cursor position from the fname entry in the filepos map @param fname file entry for which to load position information */ - FilePos load(std::string const & fname) const; + FilePos load(support::FileName const & fname) const; private: /// default number of lastfilepos to save */ @@ -177,16 +178,24 @@ public: class Bookmark { public: /// Filename - std::string filename; - /// Cursor paragraph Id + support::FileName filename; + /// Cursor pit, will be saved/restored by .lyx/session + pit_type par_pit; + /// Cursor paragraph Id, used to lcoate bookmarks for opened files int par_id; - /// Cursor position + /// Cursor position within a paragraph pos_type par_pos; /// Bookmark() : par_id(0), par_pos(0) {} /// - Bookmark(std::string const & f, int id, pos_type pos) - : filename(f), par_id(id), par_pos(pos) {} + Bookmark(support::FileName const & f, pit_type pit, int id, pos_type pos) + : filename(f), par_pit(pit), par_id(id), par_pos(pos) {} + /// set bookmark par_id, this is because newly loaded bookmark + /// may have zero par_id and par_pit can change during editing, see bug 3092 + void setPos(pit_type pit, int id) { + par_pit = pit; + par_id = id; + } }; /// @@ -195,11 +204,11 @@ public: public: /// constructor, set max_bookmarks /// allow 20 regular bookmarks - BookmarksSection() : max_bookmarks(20), bookmarks(0) {} + BookmarksSection() : bookmarks(0), max_bookmarks(20) {} /// Save the current position as bookmark /// if save==false, save to temp_bookmark - void save(std::string const & fname, int par_id, pos_type par_pos, bool persistent); + void save(support::FileName const & fname, pit_type pit, int par_id, pos_type par_pos, bool persistent); /// return bookmark, return temp_bookmark if i==0 Bookmark const & bookmark(unsigned int i) const; @@ -379,7 +388,7 @@ public: private: /// file to save session, determined in the constructor. - std::string session_file; + support::FileName session_file; /** Read the session file. Reads the #.lyx/session# at the beginning of the LyX session.