]> git.lyx.org Git - lyx.git/commitdiff
Only paint the paragraph end markers when a new paragraph follows. Otherwise, charsty...
authorVincent van Ravesteijn <vfr@lyx.org>
Thu, 20 Aug 2009 18:30:06 +0000 (18:30 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Thu, 20 Aug 2009 18:30:06 +0000 (18:30 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31168 a592a061-630c-0410-9148-cb99ea01b6c8

src/TextMetrics.cpp
src/rowpainter.cpp

index 778a346d4fd3460b169c66f6ee4407a232259ce4..a3f7550468dda2cae6c7d654d16c6aa6f2c0a426 100644 (file)
@@ -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:
index 61f9caf416790ce456d124b3c520185cee1339dd..80a50bea2e60aaed3b58bec31784ea046b3dceb7 100644 (file)
@@ -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;