]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.h
Fix left/right border UI when toggling formal
[lyx.git] / src / insets / InsetTabular.h
index cd25c4e7f66c224549525642406899c1ae134e2c..182b419bdd84ba8eeac53f7eaea08f5878f46a3e 100644 (file)
@@ -63,6 +63,10 @@ public:
        ///
        void toggleFixedWidth(bool fw) { isFixedWidth = fw; }
        ///
+       void toggleMultiCol(bool m) { isMultiColumn = m; }
+       ///
+       void toggleMultiRow(bool m) { isMultiRow = m; }
+       ///
        void setContentAlignment(LyXAlignment al) {contentAlign = al; }
        /// writes the contents of the cell as a string, optionally
        /// descending into insets
@@ -72,14 +76,17 @@ public:
        ///
        void addToToc(DocIterator const & di, bool output_active,
                                  UpdateType utype, TocBackend & backend) const;
+       ///
+       void metrics(MetricsInfo &, Dimension &) const;
 private:
        /// unimplemented
        InsetTableCell();
        /// unimplemented
        void operator=(InsetTableCell const &);
        // FIXME
-       // This boolean is supposed to track whether the cell has had its
-       // width explicitly set. We need to know this to determine whether
+       // These booleans are supposed to track whether the cell has had its
+       // width explicitly set and whether it is part of a multicolumn, respectively.
+       // We need to know this to determine whether
        // layout changes and paragraph customization are allowed---that is,
        // we need it in forcePlainLayout() and allowParagraphCustomization().
        // Unfortunately, that information is not readily available in
@@ -102,6 +109,10 @@ private:
        // --rgh
        ///
        bool isFixedWidth;
+       ///
+       bool isMultiColumn;
+       ///
+       bool isMultiRow;
        // FIXME: Here the thoughts from the comment above also apply.
        ///
        LyXAlignment contentAlign;
@@ -120,11 +131,7 @@ private:
        /// Is the width forced to some value?
        bool hasFixedWidth() const { return isFixedWidth; }
        /// Can the cell contain several paragraphs?
-       /** FIXME this is wrong for multirows, that are limited to one
-        * paragraph. However, we cannot test for this (see the big
-        * comment above).
-        */
-       bool allowMultiPar() const { return isFixedWidth; }
+       bool allowMultiPar() const { return !isMultiRow && (!isMultiColumn || isFixedWidth); }
 };
 
 
@@ -216,6 +223,8 @@ public:
                ///
                SET_ALL_LINES,
                ///
+               RESET_FORMAL_DEFAULT,
+               ///
                UNSET_ALL_LINES,
                ///
                TOGGLE_LONGTABULAR,
@@ -299,6 +308,8 @@ public:
                ///
                SET_TABULAR_WIDTH,
                ///
+               SET_INNER_LINES,
+               ///
                LAST_ACTION
        };
        ///
@@ -402,9 +413,13 @@ public:
        /// Returns true if there is a topline, returns false if not
        bool bottomLine(idx_type cell) const;
        /// Returns true if there is a topline, returns false if not
-       bool leftLine(idx_type cell) const;
+       /// If \p ignore_bt is true, we return the state as if booktabs was
+       /// not used
+       bool leftLine(idx_type cell, bool const ignore_bt = false) const;
        /// Returns true if there is a topline, returns false if not
-       bool rightLine(idx_type cell) const;
+       /// If \p ignore_bt is true, we return the state as if booktabs was
+       /// not used
+       bool rightLine(idx_type cell, bool const ignore_bt = false) const;
 
        /// return space occupied by the second horizontal line and
        /// interline space above row \p row in pixels
@@ -534,7 +549,9 @@ public:
        ///
        bool hasVarwidthColumn() const;
        ///
-       idx_type setMultiColumn(idx_type cell, idx_type number,
+       bool isVTypeColumn(col_type cell) const;
+       ///
+       idx_type setMultiColumn(Cursor & cur, idx_type cell, idx_type number,
                             bool const right_border);
        ///
        void unsetMultiColumn(idx_type cell);
@@ -547,7 +564,7 @@ public:
        ///
        bool hasMultiRow(row_type r) const;
        ///
-       idx_type setMultiRow(idx_type cell, idx_type number,
+       idx_type setMultiRow(Cursor & cur, idx_type cell, idx_type number,
                             bool const bottom_border,
                             LyXAlignment const halign);
        ///
@@ -595,7 +612,7 @@ public:
        ///
        bool getLTNewPage(row_type row) const;
        ///
-       idx_type setLTCaption(row_type row, bool what);
+       idx_type setLTCaption(Cursor & cur, row_type row, bool what);
        ///
        bool ltCaption(row_type row) const;
        ///
@@ -798,13 +815,13 @@ public:
        ///
        bool setFixedWidth(row_type r, col_type c);
        /// return true of update is needed
-       bool updateColumnWidths();
+       bool updateColumnWidths(MetricsInfo & mi);
        ///
        idx_type columnSpan(idx_type cell) const;
        ///
        idx_type rowSpan(idx_type cell) const;
        ///
-       BoxType useParbox(idx_type cell) const;
+       BoxType useBox(idx_type cell) const;
        ///
        // helper function for Latex
        ///