diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 68fcb3c13d..4f3e24d960 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -421,10 +421,21 @@ bool TextMetrics::redoParagraph(pit_type const pit) parPos.pos()++; } + // If there is an end of paragraph marker, its size should be + // substracted to the available width. The logic here is + // almost the same as in breakRow, remember keep them in sync. + int eop = 0; + if (lyxrc.paragraph_markers && ii->pos + 1 == par.size() + && size_type(pit + 1) < text_->paragraphs().size()) { + Font f(text_->layoutFont(pit)); + // ΒΆ U+00B6 PILCROW SIGN + eop = theFontMetrics(f).width(char_type(0x00B6)); + } + // do the metric calculation Dimension dim; int const w = max_width_ - leftMargin(max_width_, pit, ii->pos) - - right_margin; + - right_margin - eop; Font const & font = ii->inset->inheritFont() ? displayFont(pit, ii->pos) : bufferfont; MacroContext mc(&buffer, parPos); @@ -807,8 +818,6 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit // the width available for the row. int const width = max_width_ - row.right_margin; - ParagraphList const & pars = text_->paragraphs(); - #if 0 //FIXME: As long as leftMargin() is not correctly implemented for // MARGIN_RIGHT_ADDRESS_BOX, we should also not do this here. @@ -916,7 +925,9 @@ void TextMetrics::breakRow(Row & row, int const right_margin, pit_type const pit row.finalizeLast(); row.endpos(i); - // End of paragraph marker + // End of paragraph marker. The logic here is almost the + // same as in redoParagraph, remember keep them in sync. + ParagraphList const & pars = text_->paragraphs(); if (lyxrc.paragraph_markers && !need_new_row && i == end && size_type(pit + 1) < pars.size()) { // add a virtual element for the end-of-paragraph diff --git a/status.22x b/status.22x index 186a18898a..97fbaa4896 100644 --- a/status.22x +++ b/status.22x @@ -48,13 +48,15 @@ What's new - Remove duplicate entries from the Symbols dialog (bug 10644). -- Always shows the float type in the float inset label (bug 10618). +- Always show the float type in the float inset label (bug 10618). - Show correct color name for green in the status bar (bug 10656). - fixes to cursor positionning on mouse click for right-to-left text (bug 10569). +- Fix metricsof full-width insets when paragraph endings are shown (bug #10537). + * INTERNALS