+ /**
+ * The target x position of the cursor. This is used for when
+ * we have text like :
+ *
+ * blah blah blah blah| blah blah blah
+ * blah blah blah
+ * blah blah blah blah blah blah
+ *
+ * When we move onto row 3, we would like to be vertically aligned
+ * with where we were in row 1, despite the fact that row 2 is
+ * shorter than x()
+ */
+ int x_target_;
+ /// do we have a selection?
+ bool selection_;
+ /// are we on the way to get one?
+ bool mark_;
+
+ //
+ // math specific stuff that could be promoted to "global" later
+ //
+ /// do we allow autocorrection
+ bool autocorrect_;
+ /// are we entering a macro name?
+ bool macromode_;
+
+
+///////////////////////////////////////////////////////////////////
+//
+// The part below is the non-integrated rest of the original math
+// cursor. This should be either generalized for texted or moved
+// back to the math insets.
+//
+///////////////////////////////////////////////////////////////////
+
+public:
+ ///
+ void insert(MathAtom const &);
+ ///
+ void insert(MathArray const &);
+ /// return false for empty math insets
+ bool erase();
+ /// return false for empty math insets
+ bool backspace();
+ /// called for LFUN_UP etc
+ bool up();
+ /// called for LFUN_DOWN etc
+ bool down();
+ ///
+ void plainErase();
+ ///
+ void plainInsert(MathAtom const & at);
+ ///
+ void niceInsert(MathAtom const & at);
+ ///
+ void niceInsert(std::string const & str);
+
+ /// in pixels from top of screen
+ void setScreenPos(int x, int y);
+ /// in pixels from left of screen
+ int targetX() const;
+ /// current offset in the top cell
+ /// interpret name a name of a macro
+ void macroModeClose();
+ /// are we currently typing the name of a macro?
+ bool inMacroMode() const;
+ /// get access to the macro we are currently typing
+ MathUnknownInset * activeMacro();
+
+ /// replace selected stuff with at, placing the former
+ // selection in given cell of atom
+ void handleNest(MathAtom const & at, int cell = 0);
+ ///
+ bool isInside(InsetBase const *);
+
+ /// make sure cursor position is valid
+ void normalize();
+ /// mark current cursor trace for redraw
+ void touch();
+
+ /// hack for reveal codes
+ void markInsert();
+ void markErase();
+ /// injects content of a cell into parent
+ void pullArg();
+ /// split font inset etc
+ void handleFont(std::string const & font);
+
+ /// display a message
+ void message(std::string const & msg) const;
+ /// display an error message
+ void errorMessage(std::string const & msg) const;