X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsession.h;h=4cf5dcb0808bd0c10c32f43d4bcd0f3f5c347941;hb=cd4033aef3a3f1efdb5a676b8bab3d367f53a830;hp=83e7f26b948f51e9b27abf7d0aa83eac533ff71b;hpb=ed99f752f9b4ce52cf55cac2a94658fb087c7383;p=lyx.git diff --git a/src/session.h b/src/session.h index 83e7f26b94..4cf5dcb080 100644 --- a/src/session.h +++ b/src/session.h @@ -179,15 +179,23 @@ public: public: /// Filename support::FileName filename; - /// Cursor paragraph Id + /// 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(support::FileName 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; + } }; /// @@ -200,7 +208,7 @@ public: /// Save the current position as bookmark /// if save==false, save to temp_bookmark - void save(support::FileName 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; @@ -250,10 +258,14 @@ public: public: /// ToolbarInfo() : - state(ON), location(NOTSET) { } + state(ON), location(NOTSET), posx(0), posy(0) { } /// - ToolbarInfo(int s, int loc) : - state(static_cast(s)), location(static_cast(loc)) { } + ToolbarInfo(int s, int loc, int x=0, int y=0) : + state(static_cast(s)), + location(static_cast(loc)), + posx(x), + posy(y) + { } public: enum State { @@ -276,11 +288,20 @@ public: Location location; + /// x-position of the toolbar + int posx; + + /// y-position of the toolbar + int posy; + /// potentially, icons }; + typedef boost::tuple ToolbarItem; + /// info for each toolbar - typedef std::map ToolbarMap; + typedef std::vector ToolbarList; + public: /// @@ -292,11 +313,24 @@ public: /// return reference to toolbar info, create a new one if needed ToolbarInfo & load(std::string const & name); + /// toolbar begin + ToolbarList::const_iterator begin() { return toolbars.begin(); } + + /// toolbar end + ToolbarList::const_iterator end() { return toolbars.end(); } + private: /// toolbar information - ToolbarMap toolbars; + ToolbarList toolbars; }; +/// comparison operator to sort toolbars, the rules are: +/// ON before OFF +/// TOP < BOTTOM < LEFT < RIGHT +/// Line at each side +/// order in each line +bool operator< (ToolbarSection::ToolbarItem const & a, ToolbarSection::ToolbarItem const & b); + class SessionInfoSection : SessionSection {