X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FTextMetrics.cpp;h=fc7e09d8628ca79cc4069f4b4f29ff04a97b12ec;hb=5b84f11f80d1ec160dbfa312bc2358cfd7abec72;hp=9bb116d360d9182d270bcfe50a43d7dbcca22ec9;hpb=f609a4717fbdf5e2a5eeb1cf08feb16f8ecca7c5;p=lyx.git diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 9bb116d360..fc7e09d862 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -436,8 +436,9 @@ bool TextMetrics::redoParagraph(pit_type const pit, bool const align_rows) // FIXME: This check ought to be done somewhere else. It is the reason // why text_ is not const. But then, where else to do it? // Well, how can you end up with either (a) a biblio environment that - // has no InsetBibitem or (b) a biblio environment with more than one - // InsetBibitem? I think the answer is: when paragraphs are merged; + // has no InsetBibitem, (b) a biblio environment with more than one + // InsetBibitem or (c) a paragraph that has a bib item but is no biblio + // environment? I think the answer is: when paragraphs are merged; // when layout is set; when material is pasted. if (par.brokenBiblio()) { Cursor & cur = const_cast(bv_->cursor()); @@ -983,11 +984,17 @@ bool TextMetrics::breakRow(Row & row, int const right_margin) const Inset const * inset = 0; if (par.isNewline(i) || par.isEnvSeparator(i) || (i + 1 < end && (inset = par.getInset(i + 1)) - && inset->display()) + && inset->display()) || (!row.empty() && row.back().inset - && row.back().inset->display())) { + && row.back().inset->display())) { row.flushed(true); - need_new_row = par.isNewline(i); + // We will force a row creation after either + // - a newline; + // - a display inset followed by a end label. + need_new_row = + par.isNewline(i) + || (inset && inset->display() && i + 1 == end + && text_->getEndLabel(row.pit()) != END_LABEL_NO_LABEL); ++i; break; }