]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_nestinset.h
swallow <Return> events in mathed. Should mimic 1.3.x behaviour.
[lyx.git] / src / mathed / math_nestinset.h
index 16bf5e7fe3cc5172896eec34c1c54837d6cce166..7bb9f08f22e95e9e42625d971e7f2316dfa12a31 100644 (file)
@@ -25,14 +25,13 @@ public:
        /// nestinsets have a fixed size to start with
        explicit MathNestInset(idx_type ncells);
 
-       /// the size is usuall some sort of convex hull of the cells
+       /// the size is usually some sort of convex hull of the cells
        /// hides inset::metrics() intentionally!
        void metrics(MetricsInfo const & mi) const;
        /// draw background if locked
        void draw(PainterInfo & pi, int x, int y) const;
        /// draw selection background
-       void drawSelection(PainterInfo & pi,
-               idx_type idx1, pos_type pos1, idx_type idx2, pos_type pos2) const;
+       void drawSelection(PainterInfo & pi, int x, int y) const;
        /// appends itself with macro arguments substituted
        void substitute(MathMacro const & macro);
        /// identifies NestInsets
@@ -40,27 +39,26 @@ public:
        /// identifies NestInsets
        MathNestInset const * asNestInset() const { return this; }
        /// get cursor position
-       void getScreenPos(idx_type idx, pos_type pos, int & x, int & y) const;
+       void getCursorPos(CursorSlice const & cur, int & x, int & y) const;
+       ///
+       void edit(LCursor & cur, bool left);
+       ///
+       InsetBase * editXY(LCursor & cur, int x, int y);
 
        /// order of movement through the cells when pressing the left key
-       bool idxLeft(idx_type & idx, pos_type & pos) const;
+       bool idxLeft(LCursor &) const;
        /// order of movement through the cells when pressing the right key
-       bool idxRight(idx_type & idx, pos_type & pos) const;
+       bool idxRight(LCursor &) const;
 
        /// move one physical cell up
-       bool idxNext(idx_type & idx, pos_type & pos) const;
+       bool idxNext(LCursor &) const;
        /// move one physical cell down
-       bool idxPrev(idx_type & idx, pos_type & pos) const;
+       bool idxPrev(LCursor &) const;
 
        /// target pos when we enter the inset from the left by pressing "Right"
-       bool idxFirst(idx_type & idx, pos_type & pos) const;
+       bool idxFirst(LCursor &) const;
        /// target pos when we enter the inset from the right by pressing "Left"
-       bool idxLast(idx_type & idx, pos_type & pos) const;
-
-       /// where should we go if we press home?
-       bool idxHome(idx_type & idx, pos_type & pos) const;
-       /// where should we go if we press end?
-       bool idxEnd(idx_type & idx, pos_type & pos) const;
+       bool idxLast(LCursor &) const;
 
        /// number of cells currently governed by us
        idx_type nargs() const;
@@ -69,7 +67,7 @@ public:
        /// access to the lock
        void lock(bool);
        /// get notification when the cursor leaves this inset
-       void notifyCursorLeaves(idx_type);
+       void notifyCursorLeaves(LCursor & cur);
 
        /// direct access to the cell
        MathArray & cell(idx_type);
@@ -90,35 +88,48 @@ public:
 
        /// debug helper
        void dump() const;
-       /// is the cursor currently somewhere within this inset?
-       virtual bool editing() const;
 
        /// writes \\, name(), and args in braces and '\\lyxlock' if necessary
        void write(WriteStream & os) const;
        /// writes [, name(), and args in []
        void normalize(NormalStream & os) const;
+       ///
+       int latex(Buffer const &, std::ostream & os,
+                       OutputParams const & runparams) const;
+
 protected:
        ///
-       virtual
-       DispatchResult
-       priv_dispatch(FuncRequest const & cmd, idx_type & idx, pos_type & pos);
+       void priv_dispatch(LCursor & cur, FuncRequest & cmd);
+       /// do we want to handle this event?
+       bool getStatus(LCursor & cur, FuncRequest const & cmd,
+               FuncStatus & status) const;
+       ///
+       void handleFont(LCursor & cur,
+               std::string const & arg, std::string const & font);
+       ///
+       void handleFont2(LCursor & cur, std::string const & arg);
 
+       ///
+       bool interpret(LCursor & cur, char c);
+       ///
+       bool script(LCursor & cur, bool);
+
+
+private:
+       /// lfun handler
+       void lfunMousePress(LCursor &, FuncRequest &);
+       ///
+       void lfunMouseRelease(LCursor &, FuncRequest &);
+       ///
+       void lfunMouseMotion(LCursor &, FuncRequest &);
+
+protected:
        /// we store the cells in a vector
        typedef std::vector<MathArray> cells_type;
        /// thusly:
        cells_type cells_;
        /// if the inset is locked, it can't be entered with the cursor
        bool lock_;
-
-       /// draw four angular markers
-       void drawMarkers(PainterInfo & pi, int x, int y) const;
-       /// draw two angular markers
-       void drawMarkers2(PainterInfo & pi, int x, int y) const;
-
-       /// add space for markers
-       void metricsMarkers(int frame = 1) const;
-       /// add space for markers
-       void metricsMarkers2(int frame = 1) const;
 };
 
 #endif