The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit c671703f05a74e5b005666c29aff2626931cb239
Author: Vincent van Ravesteijn <[email protected]>
Date:   Wed May 2 18:02:52 2012 +0200

    Fix bug #953: Paint text decorations for spaces

diff --git a/src/rowpainter.cpp b/src/rowpainter.cpp
index a9f8352..c33bd79 100644
--- a/src/rowpainter.cpp
+++ b/src/rowpainter.cpp
@@ -360,6 +360,14 @@ void RowPainter::paintChars(pos_type & vpos, FontInfo 
const & font,
 }
 
 
+void RowPainter::paintSeparator(double orig_x, double width,
+       FontInfo const & font)
+{
+       pi_.pain.textDecoration(font, int(orig_x), yo_, int(width));
+       x_ += width;
+}
+
+
 void RowPainter::paintForeignMark(double orig_x, Language const * lang,
                int desc)
 {
@@ -937,9 +945,10 @@ void RowPainter::paintText()
                if (par_.isSeparator(pos)) {
                        Font const orig_font = text_metrics_.displayFont(pit_, 
pos);
                        double const orig_x = x_;
-                       x_ += width_pos;
+                       double separator_width = width_pos;
                        if (pos >= body_pos)
-                               x_ += row_.separator;
+                               separator_width += row_.separator;
+                       paintSeparator(orig_x, separator_width, 
orig_font.fontInfo());
                        paintForeignMark(orig_x, orig_font.language());
                        ++vpos;
 
diff --git a/src/rowpainter.h b/src/rowpainter.h
index 7a43ef7..480a2dd 100644
--- a/src/rowpainter.h
+++ b/src/rowpainter.h
@@ -58,6 +58,7 @@ public:
        void paintSelection();
 
 private:
+       void paintSeparator(double orig_x, double width, FontInfo const & font);
        void paintForeignMark(double orig_x, Language const * lang, int desc = 
0);
        void paintMisspelledMark(double orig_x, bool changed);
        void paintHebrewComposeChar(pos_type & vpos, FontInfo const & font);

commit 53b75399e75f4895880861908d05eed119dca3a8
Author: Vincent van Ravesteijn <[email protected]>
Date:   Wed May 2 18:02:17 2012 +0200

    Factor out painting of text decorations

diff --git a/src/frontends/Painter.h b/src/frontends/Painter.h
index 8bbda37..d219b1b 100644
--- a/src/frontends/Painter.h
+++ b/src/frontends/Painter.h
@@ -127,6 +127,9 @@ public:
        */
        virtual int text(int x, int y, char_type c, FontInfo const & f) = 0;
 
+       /// draw the underbar, strikeout, uuline and uwave font attributes
+       virtual void textDecoration(FontInfo const & f, int x, int y, int 
width) = 0;
+
        /**
         * Draw a string and enclose it inside a rectangle. If
         * back color is specified, the background is cleared with
diff --git a/src/frontends/qt4/GuiPainter.cpp b/src/frontends/qt4/GuiPainter.cpp
index 5cb43a0..db18858 100644
--- a/src/frontends/qt4/GuiPainter.cpp
+++ b/src/frontends/qt4/GuiPainter.cpp
@@ -335,14 +335,7 @@ int GuiPainter::text(int x, int y, docstring const & s,
 
        if (f.realShape() == SMALLCAPS_SHAPE) {
                textwidth = smallCapsText(x, y, str, f);
-               if (f.underbar() == FONT_ON)
-                       underline(f, x, y, textwidth);
-               if (f.strikeout() == FONT_ON)
-                       strikeoutLine(f, x, y, textwidth);
-               if (f.uuline() == FONT_ON)
-                       doubleUnderline(f, x, y, textwidth);
-               if (f.uwave() == FONT_ON)
-                       wavyHorizontalLine(x, y, textwidth, 
f.realColor().baseColor);
+               textDecoration(f, x, y, textwidth);
                return textwidth;
        }
 
@@ -350,15 +343,7 @@ int GuiPainter::text(int x, int y, docstring const & s,
        //   textwidth = fontMetrics().width(str);
        // because the above is awfully expensive on MacOSX
        textwidth = fm.width(s);
-       if (f.underbar() == FONT_ON)
-               underline(f, x, y, textwidth);
-       if (f.strikeout() == FONT_ON)
-               strikeoutLine(f, x, y, textwidth);
-       if (f.uuline() == FONT_ON)
-               doubleUnderline(f, x, y, textwidth);
-       if (f.uwave() == FONT_ON)
-               // f.color() doesn't work on some circumstances
-               wavyHorizontalLine(x, y, textwidth,  f.realColor().baseColor);
+       textDecoration(f, x, y, textwidth);
 
        if (!isDrawingEnabled())
                return textwidth;
@@ -441,6 +426,20 @@ int GuiPainter::text(int x, int y, docstring const & s,
 }
 
 
+void GuiPainter::textDecoration(FontInfo const & f, int x, int y, int width)
+{
+       if (f.underbar() == FONT_ON)
+               underline(f, x, y, width);
+       if (f.strikeout() == FONT_ON)
+               strikeoutLine(f, x, y, width);
+       if (f.uuline() == FONT_ON)
+               doubleUnderline(f, x, y, width);
+       if (f.uwave() == FONT_ON)
+               // f.color() doesn't work on some circumstances
+               wavyHorizontalLine(x, y, width,  f.realColor().baseColor);
+}
+
+
 static int max(int a, int b) { return a > b ? a : b; }
 
 
diff --git a/src/frontends/qt4/GuiPainter.h b/src/frontends/qt4/GuiPainter.h
index a3849bb..a295078 100644
--- a/src/frontends/qt4/GuiPainter.h
+++ b/src/frontends/qt4/GuiPainter.h
@@ -93,6 +93,9 @@ public:
        /// draw a char at position x, y (y is the baseline)
        virtual int text(int x, int y, char_type c, FontInfo const & f);
 
+       ///
+       virtual void textDecoration(FontInfo const & f, int x, int y, int 
width);
+
        /// draw a string and enclose it inside a button frame
        virtual void buttonText(int x, int baseline, docstring const & s,
                FontInfo const & font, bool mouseHover);

-----------------------------------------------------------------------

Summary of changes:
 src/frontends/Painter.h          |    3 +++
 src/frontends/qt4/GuiPainter.cpp |   33 ++++++++++++++++-----------------
 src/frontends/qt4/GuiPainter.h   |    3 +++
 src/rowpainter.cpp               |   13 +++++++++++--
 src/rowpainter.h                 |    1 +
 5 files changed, 34 insertions(+), 19 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to