From: Vincent van Ravesteijn Date: Thu, 20 Aug 2009 18:30:06 +0000 (+0000) Subject: Only paint the paragraph end markers when a new paragraph follows. Otherwise, charsty... X-Git-Tag: 2.0.0~5627 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=e66603928377663bc673f07b4a900261200324dc;p=features.git Only paint the paragraph end markers when a new paragraph follows. Otherwise, charstyle insets, for example, also get a paragraph end marker although they are just part of the paragraph. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31168 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index 778a346d4f..a3f7550468 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -838,12 +838,16 @@ pos_type TextMetrics::rowBreakPoint(int width, pit_type const pit, FontIterator fi = FontIterator(*this, par, pit, pos); pos_type point = end; pos_type i = pos; + + ParagraphList const & pars_ = text_->paragraphs(); + bool const draw_par_end_marker = lyxrc.paragraph_markers + && size_type(pit + 1) < pars_.size(); + for ( ; i < end; ++i, ++fi) { int thiswidth = pm.singleWidth(i, *fi); - if (i == end - 1 && lyxrc.paragraph_markers) - // enlarge the last character to hold the - // end-of-par marker + if (draw_par_end_marker && i == end - 1) + // enlarge the last character to hold the end-of-par marker thiswidth += par_marker_width; // add inline completion width @@ -976,9 +980,14 @@ int TextMetrics::rowWidth(int right_margin, pit_type const pit, // count the paragraph end marker. if (end == par.size() && lyxrc.paragraph_markers) { - docstring const s(1, char_type(0x00B6)); - Font f; - w += theFontMetrics(f).width(s); + ParagraphList const & pars_ = text_->paragraphs(); + if (size_type(pit + 1) < pars_.size()) { + // enlarge the last character to hold the + // end-of-par marker + docstring const s(1, char_type(0x00B6)); + Font f; + w += theFontMetrics(f).width(s); + } } if (body_pos > 0 && body_pos >= end) { @@ -1681,9 +1690,12 @@ int TextMetrics::cursorX(CursorSlice const & sl, skipped_sep_vpos = bidi.log2vis(end - 1); if (lyxrc.paragraph_markers && text_->isRTL(par)) { - FontInfo f; - docstring const s = docstring(1, char_type(0x00B6)); - x += theFontMetrics(f).width(s); + ParagraphList const & pars_ = text_->paragraphs(); + if (size_type(pit + 1) < pars_.size()) { + FontInfo f; + docstring const s = docstring(1, char_type(0x00B6)); + x += theFontMetrics(f).width(s); + } } // Inline completion RTL special case row_pos == cursor_pos: diff --git a/src/rowpainter.cpp b/src/rowpainter.cpp index 61f9caf416..80a50bea2e 100644 --- a/src/rowpainter.cpp +++ b/src/rowpainter.cpp @@ -687,13 +687,12 @@ void RowPainter::paintLast() } case END_LABEL_NO_LABEL: - if (lyxrc.paragraph_markers) { + if (lyxrc.paragraph_markers && size_type(pit_ + 1) < pars_.size()) { docstring const s = docstring(1, char_type(0x00B6)); FontInfo f = FontInfo(); FontMetrics const & fm = theFontMetrics(f); - double const x = x_; f.setColor(Color_paragraphmarker); - pi_.pain.text(int(x), yo_, s, f); + pi_.pain.text(int(x_), yo_, s, f); x_ += fm.width(s); } break;