]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.h
Circumvent odd stmary font metrics (part of #9990).
[lyx.git] / src / insets / InsetTabular.h
index 0001367a9da75dd5dda15ac45c46f02a520f6123..de664f15be2af1694a7b7aee81baf157f3b814ac 100644 (file)
@@ -71,7 +71,8 @@ public:
        ///
        docstring xhtml(XHTMLStream &, OutputParams const &) const;
        ///
-       void addToToc(DocIterator const & di, bool output_active) const;
+       void addToToc(DocIterator const & di, bool output_active,
+                                 UpdateType utype) const;
 private:
        /// unimplemented
        InsetTableCell();
@@ -115,8 +116,16 @@ private:
        virtual bool forcePlainLayout(idx_type = 0) const;
        ///
        virtual bool allowParagraphCustomization(idx_type = 0) const;
+       ///
+       virtual bool forceLocalFontSwitch() const;
        /// 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; }
 };
 
 
@@ -210,6 +219,8 @@ public:
                ///
                UNSET_ALL_LINES,
                ///
+               TOGGLE_LONGTABULAR,
+               ///
                SET_LONGTABULAR,
                ///
                UNSET_LONGTABULAR,
@@ -257,6 +268,8 @@ public:
                ///
                SET_SPECIAL_MULTICOLUMN,
                ///
+               TOGGLE_BOOKTABS,
+               ///
                SET_BOOKTABS,
                ///
                UNSET_BOOKTABS,
@@ -545,7 +558,9 @@ public:
        idx_type cellAbove(idx_type cell) const;
        ///
        idx_type cellBelow(idx_type cell) const;
-       ///
+       /// \return the index of the VISIBLE cell at row, column
+       /// this will be the same as the cell in the previous row,
+       /// e.g., if the cell is part of a multirow
        idx_type cellIndex(row_type row, col_type column) const;
        ///
        void setUsebox(idx_type cell, BoxType);
@@ -585,23 +600,33 @@ public:
        bool haveLTCaption(CaptionType captiontype = CAPTION_ANY) const;
        ///
        // end longtable support
-       ///
+
+       //@{
+       /// there is a subtle difference between these two methods.
+       ///   cellInset(r,c);
+       /// and
+       ///   cellInset(cellIndex(r,c));
+       /// can return different things. this is because cellIndex(r,c)
+       /// returns the VISIBLE cell at r,c, which may be the same as the
+       /// cell at the previous row or column, if we're dealing with some
+       /// multirow or multicell.
        shared_ptr<InsetTableCell> cellInset(idx_type cell) const;
-       ///
        shared_ptr<InsetTableCell> cellInset(row_type row,
                                                  col_type column) const;
+       //@}
        ///
        void setCellInset(row_type row, col_type column,
                          shared_ptr<InsetTableCell>) const;
        /// Search for \param inset in the tabular, with the
        ///
        void validate(LaTeXFeatures &) const;
-//private:
-  // FIXME Now that cells have an InsetTableCell as their insets, rather
-  // than an InsetText, it'd be possible to reverse the relationship here,
-  // so that cell_vector was a vector<InsetTableCell> rather than a
-  // vector<CellData>, and an InsetTableCell had a CellData as a member,
-  // or perhaps just had its members as members.
+
+       //private:
+       // FIXME Now that cells have an InsetTableCell as their insets, rather
+       // than an InsetText, it'd be possible to reverse the relationship here,
+       // so that cell_vector was a vector<InsetTableCell> rather than a
+       // vector<CellData>, and an InsetTableCell had a CellData as a member,
+       // or perhaps just had its members as members.
        ///
        class CellData {
        public:
@@ -878,9 +903,9 @@ public:
        /// get offset of this cursor slice relative to our upper left corner
        void cursorPos(BufferView const & bv, CursorSlice const & sl,
                bool boundary, int & x, int & y) const;
-       ///
-       bool tabularFeatures(Cursor & cur, std::string const & what);
-       ///
+       /// Executes a space-separated sequence of tabular-features requests
+       void tabularFeatures(Cursor & cur, std::string const & what);
+       /// Change a single tabular feature; does not handle undo.
        void tabularFeatures(Cursor & cur, Tabular::Feature feature,
                             std::string const & val = std::string());
        /// number of cells
@@ -922,7 +947,8 @@ public:
        /// Update the counters of this inset and of its contents
        void updateBuffer(ParIterator const &, UpdateType);
        ///
-       void addToToc(DocIterator const & di, bool output_active) const;
+       void addToToc(DocIterator const & di, bool output_active,
+                                 UpdateType utype) const;
 
        ///
        bool completionSupported(Cursor const &) const;
@@ -957,6 +983,8 @@ public:
 
        /// Returns whether the cell in the specified row and column is selected.
        bool isCellSelected(Cursor & cur, row_type row, col_type col) const;
+       ///
+       void setLayoutForHiddenCells(DocumentClass const & dc);
        //
        // Public structures and variables
        ///
@@ -968,6 +996,9 @@ private:
        ///
        void doDispatch(Cursor & cur, FuncRequest & cmd);
        ///
+       bool getFeatureStatus(Cursor & cur, std::string const & s,
+                        std::string const & argument, FuncStatus & status) const;
+       ///
        bool getStatus(Cursor & cur, FuncRequest const & cmd, FuncStatus &) const;
        ///
        Inset * clone() const { return new InsetTabular(*this); }
@@ -989,8 +1020,6 @@ private:
        ///
        int cellYPos(idx_type cell) const;
        ///
-       void resetPos(Cursor & cur) const;
-       ///
        bool copySelection(Cursor & cur);
        ///
        bool pasteClipboard(Cursor & cur);
@@ -1012,9 +1041,7 @@ private:
                                row_type row_start, row_type row_end,
                                col_type col_start, col_type col_end) const;
        ///
-       mutable idx_type first_visible_cell;
-       ///
-       mutable int scx_;
+       mutable idx_type first_visible_cell_;
        /// The vertical offset of the table due to the vertical
        /// alignment with respect to the baseline.
        mutable int offset_valign_;