diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 94516ba109..c6578cee2b 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -239,6 +239,21 @@ void RowPainter::paintStringAndSel(Row::Element const & e) const } +void RowPainter::paintTextDecoration(Row::Element const & e) const +{ + // element selected? + bool const sel = (e.pos >= row_.sel_beg && e.endpos <= row_.sel_end) + || pi_.selected; + FontInfo copy = e.font.fontInfo(); + if (sel || e.change.changed()) { + Color const col = e.change.changed() ? e.change.color() + : Color_selectiontext; + copy.setPaintColor(col); + } + pi_.pain.textDecoration(copy, int(x_), yo_, int(e.full_width())); +} + + void RowPainter::paintChange(Row::Element const & e) const { e.change.paintCue(pi_, x_, yo_, x_ + e.full_width(), e.font.fontInfo()); @@ -570,10 +585,11 @@ void RowPainter::paintText() case Row::INSET: paintInset(e); + paintTextDecoration(e); break; case Row::SPACE: - pi_.pain.textDecoration(e.font.fontInfo(), int(x_), yo_, int(e.full_width())); + paintTextDecoration(e); } // The line that indicates word in a different language diff --git a/src/RowPainter.h b/src/RowPainter.h index 99f0c8c515..dc43eaa4ad 100644 --- a/src/RowPainter.h +++ b/src/RowPainter.h @@ -59,6 +59,7 @@ public: private: void paintForeignMark(Row::Element const & e) const; void paintStringAndSel(Row::Element const & e) const; + void paintTextDecoration(Row::Element const & e) const; void paintMisspelledMark(Row::Element const & e) const; void paintChange(Row::Element const & e) const; void paintAppendixStart(int y) const; diff --git a/status.23x b/status.23x index ceab95d4e6..7f5e56d813 100644 --- a/status.23x +++ b/status.23x @@ -59,6 +59,8 @@ What's new - When using formal tables, draw top/bottom rules thicker when adequate. +- Draw underline (and friends) over insets too (bug 11297). + - Handle properly branches with a space in their name (bug 11108).