]> git.lyx.org Git - lyx.git/blobdiff - src/DocIterator.h
Center correctly top labels like Abstract.
[lyx.git] / src / DocIterator.h
index 4aff05cd0b62e43a5cd27bb4a241f7d5bdfcd568..69930fcc7d09b3e50f3dc7e08bd5c30c87960bac 100644 (file)
 namespace lyx {
 
 class DocIterator;
+class Encoding;
+class FontSpan;
+class InsetIterator;
 class LyXErr;
 class MathAtom;
 class Paragraph;
 class Text;
-class InsetIterator;
-class FontSpan;
 
 DocIterator doc_iterator_begin(Buffer const * buf, Inset const * inset = 0);
 DocIterator doc_iterator_end(Buffer const * buf, Inset const * inset = 0);
@@ -68,10 +69,10 @@ public:
 
        /// does this iterator have any content?
        bool empty() const { return slices_.empty(); }
+       /// is this the begin position?
+       bool atBegin() const { return depth() == 1 && pit() == 0 && pos() == 0; }
        /// is this the end position?
        bool atEnd() const { return slices_.empty(); }
-       /// is this the last possible position?
-       bool atLastPos() const { return pit() == lastpit() && pos() == lastpos(); }
 
        /// checks the cursor slices for disabled spell checker insets
        bool allowSpellCheck() const;
@@ -125,6 +126,7 @@ public:
        /// return the last column of the top grid
        col_type lastcol() const { return ncols() - 1; }
        /// the inset just behind the cursor
+       /// returns 0 if there is no inset (e.g. normal text)
        Inset * nextInset() const;
        /// the inset just in front of the cursor
        Inset * prevInset() const;
@@ -149,6 +151,10 @@ public:
        //
        /// return the mathed cell this cursor is in
        MathData & cell() const;
+       ///
+       InsetMath & nextMath();
+       ///
+       InsetMath & prevMath();
        /// the mathatom left of the cursor
        MathAtom & prevAtom() const;
        /// the mathatom right of the cursor
@@ -202,10 +208,12 @@ public:
        void forwardChar();
        /// move on one paragraph
        void forwardPar();
-       /// move on one inset
+       /// move on to the next closest inset
        void forwardInset();
        /// move backward one logical position
        void backwardPos();
+       /// move backward one logical position, skip collapsed insets
+       void backwardPosIgnoreCollapsed();
        /// move backward one physical character or inset
        void backwardChar();
        /// move backward one paragraph
@@ -243,6 +251,10 @@ public:
        /// Repopulate the slices insets from bottom to top. Useful
        /// for stable iterators or Undo data.
        void sanitize();
+       ///
+       bool isInside(Inset const *) const;
+       /// make sure we are outside of given inset
+       void leaveInset(Inset const & inset);
 
        /// find index of CursorSlice with &cell() == &cell (or -1 if not found)
        int find(MathData const & cell) const;
@@ -257,6 +269,11 @@ public:
        /// push one CursorSlice on top and set its index and position
        void append(idx_type idx, pos_type pos);
 
+       ///
+       docstring getPossibleLabel() const;
+
+       ///
+       Encoding const * getEncoding() const;
 private:
        friend class InsetIterator;
        friend DocIterator doc_iterator_begin(Buffer const * buf, Inset const * inset);