From: Jean-Marc Lasgouttes Date: Thu, 28 Jan 2016 13:27:05 +0000 (+0100) Subject: Avoid making tabular too large when using a caption in longtable mode X-Git-Tag: 2.2.0beta1~45 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=8d091cfe7801230b3d91622559ec5451ea473605;p=features.git Avoid making tabular too large when using a caption in longtable mode This is a fixup to commit cdb9f043, which fixed bug #9757. It is necessary to make a special case for inserting an InsetCaption in a tabular cell, because this commonly happens in longtable mode. Fixes bug #9945. --- diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 325fb6c21d..cb1c4bd2bd 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -447,11 +447,17 @@ bool TextMetrics::redoParagraph(pit_type const pit) breakRow(row, right_margin, pit); setRowHeight(row, pit); row.setChanged(false); - if (row_index || row.right_boundary() || row.endpos() < par.size()) - // If there is more than one row or the row has been - // broken by a display inset or a newline, expand the text - // to the full allowable width. This setting here is - // needed for the computeRowMetrics() below. + if (row_index || row.endpos() < par.size() + || (row.right_boundary() && par.inInset().lyxCode() != CELL_CODE)) + /* If there is more than one row or the row has been + * broken by a display inset or a newline, expand the text + * to the full allowable width. This setting here is + * needed for the computeRowMetrics() below. In the case + * of a display inset, we do nothing when inside a table + * cell, because the tabular code is not prepared for + * that, and it triggers when using a caption in a + * longtable (see bugs #9945 and #9757). + */ dim_.wid = max_width_; int const max_row_width = max(dim_.wid, row.width()); computeRowMetrics(pit, row, max_row_width);