X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2Fmath_cursor.h;h=fae5867490b95784e71310b1fa48571092feedb2;hb=b54bf51387237b8fd8e9c6064143cff4239c2eec;hp=df32032dc9da365d00ad0c311541cee10a959117;hpb=31d1ab96b69ae30c73dfa0ed84076863e6218de8;p=lyx.git diff --git a/src/mathed/math_cursor.h b/src/mathed/math_cursor.h index df32032dc9..fae5867490 100644 --- a/src/mathed/math_cursor.h +++ b/src/mathed/math_cursor.h @@ -22,10 +22,11 @@ #endif #include "math_inset.h" -#include "math_pos.h" +#include "math_iterator.h" #include "LString.h" class InsetFormulaBase; +class BufferView; class MathPainterInfo; class MathUnknownInset; class Selection; @@ -35,9 +36,9 @@ class Selection; [Have a look at math_inset.h first] The MathCursor is different from the kind of cursor used in the Outer -World. It contains a stack of MathCursorPositions, each of which is made +World. It contains a stack of MathCursorPos, each of which is made up of a inset pointer, an index and a position offset, marking a path from -this formula's mathHullInset to the current position. +this formula's MathHullInset to the current position. */ @@ -54,8 +55,6 @@ public: typedef MathInset::row_type row_type; /// type for column numbers typedef MathInset::col_type col_type; - /// how to store a cursor - typedef std::vector cursor_type; /// explicit MathCursor(InsetFormulaBase *, bool left); @@ -135,11 +134,15 @@ public: /// interpret name a name of a macro void macroModeClose(); /// are we currently typing the name of a macro? - MathUnknownInset * inMacroMode() const; + bool inMacroMode() const; + /// get access to the macro we are currently typing + MathUnknownInset * activeMacro(); + /// get access to the macro we are currently typing + MathUnknownInset const * activeMacro() const; /// are we currently typing '#1' or '#2' or...? bool inMacroArgMode() const; - /// are we in an mbox? - bool inMathMode() const; + /// are we in math mode (1), text mode (-1) or unsure? + MathInset::mode_type currentMode() const; // Local selection methods /// @@ -175,8 +178,6 @@ public: /// remove this as soon as LyXFunc::getStatus is "localized" string getLastCode() const { return "mathnormal"; } /// - void pullArg(bool goright); - /// bool isInside(MathInset const *) const; /// char valign() const; @@ -212,8 +213,6 @@ public: /// MathArray & array() const; /// - MathXArray & xarray() const; - /// bool hasPrevAtom() const; /// bool hasNextAtom() const; @@ -247,7 +246,7 @@ public: /// dump selection information for debugging void dump(char const * str) const; /// moves on - void setSelection(cursor_type const & where, size_type n); + void setSelection(MathIterator const & where, size_type n); /// void insert(char c); /// @@ -265,6 +264,8 @@ public: private: + /// injects content of a cell into parent + void pullArg(); /// moves cursor index one cell to the left bool idxLeft(); /// moves cursor index one cell to the right @@ -281,6 +282,8 @@ private: bool goUpDown(bool up); /// moves position into box bool bruteFind(int xo, int yo, int xlow, int xhigh, int ylow, int yhigh); + /// are we in a nucleus of a script inset? + bool inNucleus() const; /// grab grid marked by anchor and current cursor @@ -302,9 +305,9 @@ private: idx_type & idx(); /// path of positions the cursor had to go if it were leaving each inset - cursor_type Cursor_; + MathIterator Cursor_; /// path of positions the anchor had to go if it were leaving each inset - mutable cursor_type Anchor_; + mutable MathIterator Anchor_; /// pointer to enclsing LyX inset InsetFormulaBase * formula_; // Selection stuff @@ -321,5 +324,6 @@ private: }; extern MathCursor * mathcursor; +void releaseMathCursor(BufferView * bv); #endif