]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetTabular.cpp
Loop refactoring
[lyx.git] / src / insets / InsetTabular.cpp
index 87988afa70f5173aa817ac4f7d60c12236ae171a..afd29761e92709bc59293a3dea7021778698c8a1 100644 (file)
@@ -619,7 +619,7 @@ InsetTableCell splitCell(InsetTableCell & head, docstring const & align_d, bool
 {
        InsetTableCell tail = InsetTableCell(head);
        DocIterator const dit = separatorPos(&head, align_d);
-       hassep = (bool)dit;
+       hassep = static_cast<bool>(dit);
        if (hassep) {
                pos_type const psize = head.paragraphs().front().size();
                head.paragraphs().front().eraseChars(dit.pos(), psize, false);
@@ -1176,7 +1176,7 @@ bool Tabular::updateColumnWidths(MetricsInfo & mi)
        if (!tab_width.zero()) {
                restwidth = mi.base.inPixels(tab_width);
                // Subtract the fixed widths from the table width
-               for (auto const w : max_pwidth)
+               for (auto const w : max_pwidth)
                        restwidth -= w.second;
        }
 
@@ -1190,7 +1190,7 @@ bool Tabular::updateColumnWidths(MetricsInfo & mi)
        // Now consider that some variable width columns exceed the vcolwidth
        if (vcolwidth > 0) {
                bool changed = false;
-               for (auto const w : max_width) {
+               for (auto const w : max_width) {
                        if (tabularx || w.second > vcolwidth) {
                                --restcols;
                                restwidth -= w.second;
@@ -2189,9 +2189,7 @@ bool Tabular::needRotating() const
 
 bool Tabular::isLastCell(idx_type cell) const
 {
-       if (cell + 1 < numberofcells)
-               return false;
-       return true;
+       return cell + 1 >= numberofcells;
 }
 
 
@@ -3658,8 +3656,8 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
        docstring ret;
 
        // Some tables are inline. Likely limitation: cannot output a table within a table; is that really a limitation?
-       bool hasTableStarted = xs.isTagOpen(xml::StartTag("informaltable")) || xs.isTagOpen(xml::StartTag("table"));
-       if (!hasTableStarted) {
+       if (!runparams.docbook_in_table) { // Check on the *outer* set of parameters, so that the table can be closed
+               // properly at the end of this function.
                xs << xml::StartTag("informaltable");
                xs << xml::CR();
        }
@@ -3742,7 +3740,7 @@ void Tabular::docbook(XMLStream & xs, OutputParams const & runparams) const
        xs << xml::CR();
 
        // If this method started the table tag, also make it close it.
-       if (!hasTableStarted) {
+       if (!runparams.docbook_in_table) {
                xs << xml::EndTag("informaltable");
                xs << xml::CR();
        }
@@ -4207,7 +4205,6 @@ InsetTableCell::InsetTableCell(Buffer * buf)
          isMultiColumn(false), isMultiRow(false), contentAlign(LYX_ALIGN_CENTER)
 {}
 
-
 bool InsetTableCell::forcePlainLayout(idx_type) const
 {
        return isMultiRow || (isMultiColumn && !isFixedWidth);
@@ -4366,6 +4363,18 @@ bool InsetTabular::insetAllowed(InsetCode code) const
 }
 
 
+bool InsetTabular::allowMultiPar() const
+{
+       for (Tabular::col_type c = 0; c < tabular.ncols(); ++c) {
+               for (Tabular::row_type r = 0; r < tabular.nrows(); ++r) {
+                       if (tabular.cellInset(r,c)->allowMultiPar())
+                               return true;
+               }
+       }
+       return false;
+}
+
+
 bool InsetTabular::allowsCaptionVariation(std::string const & newtype) const
 {
        return tabular.is_long_tabular &&
@@ -5743,8 +5752,8 @@ bool InsetTabular::getFeatureStatus(Cursor & cur, string const & s,
                case Tabular::SET_LONGTABULAR:
                case Tabular::TOGGLE_LONGTABULAR:
                        // setting as longtable is not allowed when table is inside a float
-                       if (cur.innerInsetOfType(FLOAT_CODE) != 0
-                               || cur.innerInsetOfType(WRAP_CODE) != 0)
+                       if (cur.innerInsetOfType(FLOAT_CODE) != nullptr
+                               || cur.innerInsetOfType(WRAP_CODE) != nullptr)
                                status.setEnabled(false);
                        else
                                status.setEnabled(true);
@@ -7179,7 +7188,7 @@ bool InsetTabular::copySelection(Cursor & cur)
        paste_tabular->setBuffer(tabular.buffer());
 
        odocstringstream os;
-       OutputParams const runparams(0);
+       OutputParams const runparams(nullptr);
        paste_tabular->plaintext(os, runparams, 0, true, '\t', INT_MAX);
        // Needed for the "Edit->Paste recent" menu and the system clipboard.
        cap::copySelection(cur, os.str());
@@ -7346,7 +7355,7 @@ void InsetTabular::getSelection(Cursor & cur,
 
 Text * InsetTabular::getText(int idx) const
 {
-       return size_t(idx) < nargs() ? cell(idx)->getText(0) : 0;
+       return size_t(idx) < nargs() ? cell(idx)->getText(0) : nullptr;
 }
 
 
@@ -7582,7 +7591,7 @@ bool InsetTabular::showCompletionCursor() const
 
 CompletionList const * InsetTabular::createCompletionList(Cursor const & cur) const
 {
-       return completionSupported(cur) ? cur.text()->createCompletionList(cur) : 0;
+       return completionSupported(cur) ? cur.text()->createCompletionList(cur) : nullptr;
 }