+ virtual MathStyles size() const;
+
+ /// Where should we go when we press the up cursor key?
+ virtual bool idxUp(int & idx, int & pos) const;
+ /// The down key
+ virtual bool idxDown(int & idx, int & pos) const;
+ /// The left key
+ virtual bool idxLeft(int & idx, int & pos) const;
+ /// The right key
+ virtual bool idxRight(int & idx, int & pos) const;
+
+ /// Move one physical cell up
+ virtual bool idxNext(int & idx, int & pos) const;
+ /// Move one physical cell down
+ virtual bool idxPrev(int & idx, int & pos) const;
+
+ /// Target pos when we enter the inset from the left by pressing "Right"
+ virtual bool idxFirst(int & idx, int & pos) const;
+ /// Target pos when we enter the inset from the left by pressing "Up"
+ virtual bool idxFirstUp(int & idx, int & pos) const;
+ /// Target pos when we enter the inset from the left by pressing "Down"
+ virtual bool idxFirstDown(int & idx, int & pos) const;
+
+ /// Target pos when we enter the inset from the right by pressing "Left"
+ virtual bool idxLast(int & idx, int & pos) const;
+ /// Target pos when we enter the inset from the right by pressing "Up"
+ virtual bool idxLastUp(int & idx, int & pos) const;
+ /// Target pos when we enter the inset from the right by pressing "Down"
+ virtual bool idxLastDown(int & idx, int & pos) const;
+
+ /// Where should we go if we press home?
+ virtual bool idxHome(int & idx, int & pos) const;
+ /// Where should we go if we press end?
+ virtual bool idxEnd(int & idx, int & pos) const;
+
+ /// Delete a cell and move cursor
+ // the return value indicates whether the cursor should leave the inset
+ // and/or the whole inset should be deleted
+ virtual void idxDelete(int & idx, bool & popit, bool & deleteit);
+ // deletes a cell range and moves the cursor
+ virtual void idxDeleteRange(int from, int to);
+ // returns list of cell indices that are "between" from and to for
+ // selection purposes
+ virtual std::vector<int> idxBetween(int from, int to) const;
+