commit 1de0d2a19bf76cdbff30de2b3a9e3abfd1777c41 Author: Jean-Marc Lasgouttes <lasgout...@lyx.org> Date: Thu Jul 16 23:10:44 2015 +0200
Code cleanup in RowPainter * move some code that handle selection to paintInset() * change the arguments of paintSeparator() diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 70c32aa..2545362 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -116,6 +116,13 @@ int RowPainter::leftMargin() const void RowPainter::paintInset(Inset const * inset, pos_type const pos) { + // Handle selection + bool const pi_selected = pi_.selected; + Cursor const & cur = pi_.base.bv->cursor(); + if (cur.selection() && cur.text() == &text_ + && cur.normalAnchor().text() == &text_) + pi_.selected = row_.sel_beg <= pos && row_.sel_end > pos; + Font const font = text_metrics_.displayFont(pit_, pos); LASSERT(inset, return); @@ -150,6 +157,7 @@ void RowPainter::paintInset(Inset const * inset, pos_type const pos) pi_.full_repaint = pi_full_repaint; pi_.change_ = prev_change; pi_.do_spellcheck = pi_do_spellcheck; + pi_.selected = pi_selected; #ifdef DEBUG_METRICS int const x2 = x1 + dim.wid; @@ -163,10 +171,9 @@ void RowPainter::paintInset(Inset const * inset, pos_type const pos) } -void RowPainter::paintSeparator(double orig_x, double width, - FontInfo const & font) +void RowPainter::paintSeparator(double width, Font const & font) { - pi_.pain.textDecoration(font, int(orig_x), yo_, int(width)); + pi_.pain.textDecoration(font.fontInfo(), int(x_), yo_, int(width)); x_ += width; } @@ -845,21 +852,14 @@ void RowPainter::paintText() double separator_width = width_pos; if (pos >= body_pos) separator_width += row_.separator; - paintSeparator(orig_x, separator_width, orig_font.fontInfo()); + paintSeparator(separator_width, orig_font); paintForeignMark(orig_x, orig_font.language()); ++vpos; } else if (inset) { // If outer row has changed, nested insets are repaint completely. pi_.base.bv->coordCache().insets().add(inset, int(x_), yo_); - - bool const pi_selected = pi_.selected; - Cursor const & cur = pi_.base.bv->cursor(); - if (cur.selection() && cur.text() == &text_ - && cur.normalAnchor().text() == &text_) - pi_.selected = row_.sel_beg <= pos && row_.sel_end > pos; paintInset(inset, pos); - pi_.selected = pi_selected; ++vpos; } else { diff --git a/src/RowPainter.h b/src/RowPainter.h index 95c6426..f3dc1ad 100644 --- a/src/RowPainter.h +++ b/src/RowPainter.h @@ -70,11 +70,12 @@ public: void paintFirst() const; void paintLast(); void paintText(); + void paintText2(); void paintOnlyInsets(); void paintSelection() const; private: - void paintSeparator(double orig_x, double width, FontInfo const & font); + void paintSeparator(double width, Font const & font); void paintForeignMark(double orig_x, Language const * lang, int desc = 0) const; void paintStringAndSel(docstring const & str, Font const & font, Change const & change,