]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_gridinset.h
Fix event loop to no longer eat CPU
[lyx.git] / src / mathed / math_gridinset.h
index 52ff62a52bb78caf092b5671ddfdeea115a2c8cc..6a64fed5615097fde402b4061612d5b06eb76179 100644 (file)
@@ -23,7 +23,8 @@ class MathGridInset : public MathNestInset {
 public:
 
        /// additional per-cell information
-       struct CellInfo {
+       class CellInfo {
+       public:
                ///
                CellInfo();
                /// a dummy cell before a multicolumn cell
@@ -40,7 +41,8 @@ public:
        };
 
        /// additional per-row information
-       struct RowInfo {
+       class RowInfo {
+       public:
                ///
                RowInfo();
                ///
@@ -52,7 +54,7 @@ public:
                /// cached offset
                mutable int offset_;
                /// how many hlines above this row?
-               int lines_;
+               unsigned int lines_;
                /// parameter to the line break
                LyXLength crskip_;
                /// extra distance between lines
@@ -60,7 +62,8 @@ public:
        };
 
        // additional per-row information
-       struct ColInfo {
+       class ColInfo {
+       public:
                ///
                ColInfo();
                /// currently possible: 'l', 'c', 'r'
@@ -71,12 +74,8 @@ public:
                mutable int width_;
                /// cached offset
                mutable int offset_;
-               /// do we need a line to the left?
-               bool leftline_;
-               /// do we need a line to the right?
-               bool rightline_;
                /// how many lines to the left of this column?
-               int lines_;
+               unsigned int lines_;
                /// additional amount to be skipped when drawing
                int skip_;
        };
@@ -99,6 +98,9 @@ public:
        ///
        void draw(PainterInfo & pi, int x, int y) const;
        ///
+       void drawWithMargin(PainterInfo & pi, int x, int y,
+               int lmargin = 0, int rmargin = 0) const;
+       ///
        void metricsT(TextMetricsInfo const & mi, Dimension & dim) const;
        ///
        void drawT(TextPainter & pi, int x, int y) const;
@@ -156,21 +158,21 @@ public:
        /// pulls cell after pressing erase
        void idxGlue(idx_type idx);
 
-       ///
+       /// add a row
        virtual void addRow(row_type r);
-       ///
+       /// delete a row
        virtual void delRow(row_type r);
-       ///
+       /// copy a row
        virtual void copyRow(row_type r);
-       ///
+       /// swap two rows
        virtual void swapRow(row_type r);
-       ///
+       /// add a column
        virtual void addCol(col_type c);
-       ///
+       /// delete a column
        virtual void delCol(col_type c);
-       ///
+       /// copy a column
        virtual void copyCol(col_type c);
-       ///
+       /// swap two columns
        virtual void swapCol(col_type c);
        ///
        virtual void appendRow();
@@ -208,8 +210,7 @@ public:
        //void octave(OctaveStream &) const;
 
 protected:
-       ///
-       void priv_dispatch(LCursor & cur, FuncRequest & cmd);
+       virtual void doDispatch(LCursor & cur, FuncRequest & cmd);
        ///
        bool getStatus(LCursor & cur, FuncRequest const & cmd,
                FuncStatus & flag) const;
@@ -218,7 +219,8 @@ protected:
        /// returns y offset of cell compared to inset
        int cellYOffset(idx_type idx) const;
        /// returns proper 'end of line' code for LaTeX
-       virtual std::string eolString(row_type row, bool fragile = false) const;
+       virtual std::string eolString(row_type row, bool emptyline,
+                                     bool fragile) const;
        /// returns proper 'end of column' code for LaTeX
        virtual std::string eocString(col_type col, col_type lastcol) const;
        /// extract number of columns from alignment string
@@ -226,10 +228,11 @@ protected:
        /// splits cells and shifts right part to the next cell
        void splitCell(LCursor & cur);
 
-public:
-       /// row info
+       /// row info.
+       /// rowinfo_[nrows()] is a dummy row used only for hlines.
        std::vector<RowInfo> rowinfo_;
-       /// column info
+       /// column info.
+       /// colinfo_[ncols()] is a dummy column used only for vlines.
        std::vector<ColInfo> colinfo_;
        /// cell info
        std::vector<CellInfo> cellinfo_;