]> git.lyx.org Git - lyx.git/blobdiff - src/mathed/math_gridinset.h
Andreas' patch to prevent crash on click on previewd inset
[lyx.git] / src / mathed / math_gridinset.h
index 1d8cf33e8b4719c1108adb202aff3d99ea2bbb5f..525eb8c43deb303c334b29025f724cf0f0651292 100644 (file)
  *  This is the base to all grid-like editable math objects
  */
 class MathGridInset : public MathNestInset {
-
 public:
 
        /// additional per-cell information
-       struct CellInfo {
+       class CellInfo {
+       public:
                ///
                CellInfo();
                /// a dummy cell before a multicolumn cell
@@ -41,7 +41,8 @@ public:
        };
 
        /// additional per-row information
-       struct RowInfo {
+       class RowInfo {
+       public:
                ///
                RowInfo();
                ///
@@ -53,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
@@ -61,7 +62,8 @@ public:
        };
 
        // additional per-row information
-       struct ColInfo {
+       class ColInfo {
+       public:
                ///
                ColInfo();
                /// currently possible: 'l', 'c', 'r'
@@ -72,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_;
        };
@@ -94,14 +92,15 @@ public:
        /// Ensures that the dialog is closed.
        ~MathGridInset();
        ///
-       std::auto_ptr<InsetBase> clone() const;
-       ///
        void metrics(MetricsInfo & mi) const;
        ///
        void metrics(MetricsInfo & mi, Dimension &) const;
        ///
        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;
@@ -159,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();
@@ -211,8 +210,10 @@ public:
        //void octave(OctaveStream &) const;
 
 protected:
+       virtual void doDispatch(LCursor & cur, FuncRequest & cmd);
        ///
-       void priv_dispatch(LCursor & cur, FuncRequest & cmd);
+       bool getStatus(LCursor & cur, FuncRequest const & cmd,
+               FuncStatus & flag) const;
        /// returns x offset of cell compared to inset
        int cellXOffset(idx_type idx) const;
        /// returns y offset of cell compared to inset
@@ -227,14 +228,18 @@ protected:
        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_;
        ///
        char v_align_; // add approp. type
+private:
+       virtual std::auto_ptr<InsetBase> doClone() const;
 };
 
 #endif