X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fcursor_slice.h;h=22218ea713a2ba03e24de4f4953cad13d5167b10;hb=8765ab59cdddad67284007813ef25934ea0042ce;hp=6d3508ef34f37d4194113a23912ecdb97acede16;hpb=7fdf13d5455c679ac0731b017c5bab26d51960b8;p=lyx.git diff --git a/src/cursor_slice.h b/src/cursor_slice.h index 6d3508ef34..22218ea713 100644 --- a/src/cursor_slice.h +++ b/src/cursor_slice.h @@ -17,24 +17,26 @@ #ifndef CURSORSLICE_H #define CURSORSLICE_H +#include "insets/insetbase.h" #include "support/types.h" #include #include + +namespace lyx { + class BufferView; class InsetBase; class MathInset; class MathArray; class LyXText; class Paragraph; -class UpdatableInset; - /// This encapsulates a single slice of a document iterator as used e.g. /// for cursors. -// After IU, the distinction of MathInset and UpdatableInset as well as +// After IU, the distinction of MathInset and InsetOld as well as // that of MathArray and LyXText should vanish. They are conceptually the // same (now...) @@ -42,10 +44,6 @@ class CursorSlice { public: /// type for cell number in inset typedef size_t idx_type; - /// type for paragraph numbers positions within a cell - typedef lyx::pit_type pit_type; - /// type for cursor positions within a cell - typedef lyx::pos_type pos_type; /// type for row indices typedef size_t row_type; /// type for col indices @@ -79,17 +77,11 @@ public: /// return the last position within the paragraph pos_type lastpos() const; /// return the number of embedded cells - size_t nargs() const; - /*! - * \return the number of columns. - * This does only make sense in grid like insets. - */ - size_t ncols() const; - /*! - * \return the number of rows. - * This does only make sense in grid like insets. - */ - size_t nrows() const; + size_t nargs() const { return inset_->nargs(); } + /// return the number of columns (1 in non-grid-like insets) + size_t ncols() const { return inset_->ncols(); } + /// return the number of rows (1 in non-grid-like insets) + size_t nrows() const { return inset_->nrows(); } /*! * \return the grid row of the current cell. * This does only make sense in grid like insets. @@ -104,16 +96,10 @@ public: /// /// texted specific stuff /// - /// \sa boundary_ - bool boundary() const { return boundary_; } - /// \sa boundary_ - bool & boundary() { return boundary_; } /// returns text corresponding to this position - LyXText * text(); + LyXText * text() { return inset_->getText(idx_); } /// returns text corresponding to this position - LyXText const * text() const; - /// returns the owning inset if it is an UpdatableInset, else 0 - UpdatableInset * asUpdatableInset() const; + LyXText const * text() const { return inset_->getText(idx_); } /// paragraph in this cell Paragraph & paragraph(); /// paragraph in this cell @@ -122,10 +108,10 @@ public: /// /// mathed specific stuff /// + /// returns the owning inset if it is a InsetMath, else 0 + InsetMath * asInsetMath() const { return inset_->asInsetMath(); } /// returns cell corresponding to this position MathArray & cell() const; - /// returns the owning inset if it is a MathInset, else 0 - MathInset * asMathInset() const; /// write some debug information to \p os friend std::ostream & operator<<(std::ostream &, CursorSlice const &); @@ -137,10 +123,8 @@ private: * Cell index of a position in this inset. * This is the primary cell information also for grid like insets, * although we have the convenience functions row() and col() for - * those. - * This means that the corresponding idx_ of a cell in a given row - * and column changes every time the number of columns or number of - * rows changes. Normally the cursor should stay in the same cell, + * those * and column changes every time the number of columns ornumber + * of rows changes. Normally the cursor should stay in the same cell, * so these changes should typically be performed like the following: * \code * row_type const r = cur.row(); @@ -156,22 +140,6 @@ private: bool pit_valid_; /// position in this cell pos_type pos_; - /** - * When the cursor position is i, is the cursor after the i-th char - * or before the i+1-th char ? Normally, these two interpretations are - * equivalent, except when the fonts of the i-th and i+1-th char - * differ. - * We use boundary_ to distinguish between the two options: - * If boundary_=true, then the cursor is after the i-th char - * and if boundary_=false, then the cursor is before the i+1-th char. - * - * We currently use the boundary only when the language direction of - * the i-th char is different than the one of the i+1-th char. - * In this case it is important to distinguish between the two - * cursor interpretations, in order to give a reasonable behavior to - * the user. - */ - bool boundary_; }; /// test for equality @@ -185,4 +153,7 @@ bool operator>(CursorSlice const &, CursorSlice const &); /// test for order bool operator<=(CursorSlice const &, CursorSlice const &); + +} // namespace lyx + #endif