Jean-Marc Lasgouttes wrote: > I finally managed to checkout your testing repository and give it a try. > Here are a few remarks on where I think we should be going.
Any objection to putting this intro directly into cursor.h? P > --*-- > > First some explanation about what a Cursor really is. I try to go from more > local to general. Feel free to put this information on the wiki if you find > it useful and to improve it with your own findings. > > * a CursorSlice indicates the position of the cursor at local level. It > contains in particular: > * idx(): the cell that contains the cursor (for Tabular or math arrays). > Always 0 for 'plain' insets > * pit(): the index of the current paragraph (only for Texted) > * pos(): the position in the current paragraph (or in the math equation > in Mathed). > * inset(): the inset in which the cursor is. > > * a DocIterator indicated the position of the cursor in the document. It > knows about the current buffer (buffer() method) and contains a vector of > CursorSlices that describes the nesting of insets up to the point of > interest. Note that operator<< has been implemented, so that one can send a > DocIterator to a stream to see its value. Try it, it is very helpful to > understand the cursor layout. > * when using idx/pit/pos on a DocIterator, one gets the information from > the inner slice (this slice can be accessed as top()) > * inMathed() returns true when the cursor is in a math formula > * inTexted() returns true when the cursor is in text > * innerTextSlice() returns the deepest slice that is text (useful when > one is in a math equation and looks for the enclosing text) > > * A CursorData is a descendent of Dociterator that contains > * a second DocIterator object, the anchor, that is useful when > selecting. > * some other data not interesting here > This class is used only for undo and contains the Cursor element that are > not GUI-related. In LyX 2.0, Cursor was directly deriving from DocIterator > > * A Cursor is a descendant of CursorData that contains interesting > display-related information, in particular targetX(), the horizontal > position of the cursor in pixels. > * one interesting method for what you want to do is textRow(), that > returns the inner Row object that contains the cursor > > --*-- >