X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FDocIterator.h;h=69930fcc7d09b3e50f3dc7e08bd5c30c87960bac;hb=294e4884ee29585d311177406cd31499e6d81877;hp=4aff05cd0b62e43a5cd27bb4a241f7d5bdfcd568;hpb=51aebc9327345f6ea065035f489dbfec1568279f;p=lyx.git diff --git a/src/DocIterator.h b/src/DocIterator.h index 4aff05cd0b..69930fcc7d 100644 --- a/src/DocIterator.h +++ b/src/DocIterator.h @@ -20,12 +20,13 @@ 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);